从dll导入函数时System.EntryPointNotFoundException

时间:2010-07-05 04:23:58

标签: vb.net dll

我有一个用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;
}

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

没关系,我明白了。我需要在声明中添加别名。

我在我的dll上运行dumpbin并找到了导入名称。

所以我的声明名称应该是:

Public Declare Function func Lib "dll.dll" Alias "?func@@YG_NXZ" As Integer