我在 Visual Studio 中编写了一个快速的 C++ DLL,其中有一个名为 ReportVersion() 的函数返回 1。
int _stdcall ReportVersion() {
return 1;
}
然后我创建了一个 VB.net EXE 来调用这个 DLL。
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 并在任一 Release/Debug 模式下运行,ReportVersion 的返回值为 6824607285638070273。
如果我构建解决方案并手动运行 .EXE,则返回值为 1(如预期的那样)。
它到底是从哪里得到 6824607285638070273 的?
作为参考,我使用这 2 篇文章作为创建它们的示例
http://edais.mvps.org/Tutorials/CDLL/CDLLch1b.html
http://edais.mvps.org/Tutorials/CDLL/CDLLch2.html
因为我从未在用不同语言编写的 DLL/应用程序之间进行过调用。