1 を返す ReportVersion() という 1 つの関数を使用して、Visual Studio で簡単な C++ DLL を作成しました。
int _stdcall ReportVersion() {
return 1;
}
次に、この DLL を呼び出す VB.net EXE を作成しました。
Public Class Form1
Private Declare Function ReportVersion Lib "Test_DLL.dll" () As Long
Private Sub btnVersion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVersion.Click
Call MsgBox(ReportVersion())
End Sub
End Class
F5 キーを押してリリース/デバッグ モードで実行すると、ReportVersion の戻り値は 6824607285638070273 です。
ソリューションをビルドして .EXE を手動で実行すると、戻り値は 1 になります (予想どおり)。
一体どこから 6824607285638070273 を得ているのでしょうか?
参考までに、これら2つの記事を例として作成しました
http://edais.mvps.org/Tutorials/CDLL/CDLLch1b.html
http://edais.mvps.org/Tutorials/CDLL/CDLLch2.html
異なる言語で記述された DLL/アプリケーション間の呼び出しを行ったことがないためです。