代码之家  ›  专栏  ›  技术社区  ›  tangrs

从dll导入函数时System.EntryPointNotFoundException

  •  0
  • tangrs  · 技术社区  · 14 年前

    我有一个用VC++创建的Dll。我非常肯定这个Dll是可以工作的,因为当我把它导入用VC++编写的测试程序时,它可以工作并给出正确的数据。

    所有的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
    

    #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 回复  |  直到 14 年前
        1
  •  1
  •   tangrs    14 年前

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

    所以我的申报名称应该是:

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