• 締切済み

VB.netでDLLを読み込んで実行する際に、スタックを不安定にしていますというエラーが出ます。

いつもお世話になります。 掲題の通り、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 原因を追いようが無くて困っています。 どなたかご存知の方がいらっしゃいましたらご教授ください。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

そのDLL呼び出しは VB.NET用なのでしょうか? VB6用などの流用ではありませんか ・・・ VB6以前と VB.NETでは 整数の扱いが違います 32ビット長の整数が VB6ではLong型 VB.NETではInteger型になります このあたりを そのDLLの作成者に確認してみましょう