プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります。
掲題の通り、VB.net上からDLLの関数を呼び出したいのですが、

「PInvoke 関数 がスタックを不安定にしています。PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。呼び出し規約、および PInvoke シグネチャのパラメータがターゲットのアンマネージ シグネチャに一致していることを確認してください。」

というエラーメッセージが出力されます。
ソースコードは以下の通りです。

Public Class Form1

Private Declare Sub PrintShmLog Lib "XXXX.dll" (ByVal iTaskId As Long, _
ByVal iLevel As Long, _
ByVal pMsg As String)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim iTskNo As Long = 1
Dim iLevel As Long = 0
Dim str As String = "★★★"

Try
Shell("XXXXXX.exe", vbHide)
PrintShmLog(iTskNo, iLevel, str)

Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
End Class

原因を追いようが無くて困っています。
どなたかご存知の方がいらっしゃいましたらご教授ください。

A 回答 (1件)

そのDLL呼び出しは VB.NET用なのでしょうか?


VB6用などの流用ではありませんか ・・・

VB6以前と VB.NETでは 整数の扱いが違います
32ビット長の整数が VB6ではLong型 VB.NETではInteger型になります
このあたりを そのDLLの作成者に確認してみましょう
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A