我有一个用VC ++创建的Dll。我非常确定Dll是否有效,因为当我将它导入到用VC ++编写的测试程序中时,它可以工作并提供正确的数据。
但是当我尝试在VB.Net测试程序中使用它时,它会抛出一个System.EntryPointNotFoundException
所有Dll函数都使用stdcall。
以下是VB.NET测试程序的源代码:
Public Class Form1
Public Declare Function func Lib "dll.dll" () As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = func().ToString()
End Sub
End Class
以下是DLL的源代码
#include <SDKDDKVer.h>
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
__declspec(dllexport)int _stdcall func();
BOOL APIENTRY DllMain(HMODULE hModule,DWORD l_reason_for_call, LPVOID lpReserved)
{
return TRUE;
}
int _stdcall func()
{
return 123;
}
有人可以帮忙吗?
答案 0 :(得分:1)
没关系,我明白了。我需要在声明中添加别名。
我在我的dll上运行dumpbin并找到了导入名称。
所以我的声明名称应该是:
Public Declare Function func Lib "dll.dll" Alias "?func@@YG_NXZ" As Integer