こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

投稿日時 - 2008-06-17 15:55:41

QNo.4107825

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

そのDLL呼び出しは VB.NET用なのでしょうか?
VB6用などの流用ではありませんか ・・・

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

投稿日時 - 2008-06-17 17:37:10

あなたにオススメの質問