我在 DLL 里面要定义一个函数:
WORD CALLBACK HandleEventHook(RFTPEventStr* pEventStruc);但是当我在 DLL 中把函数声明成:extern "C" __declspec(dllexport) WORD CALLBACK HandleEventHook(RFTPEventStr* pEventStruc);
的时候,却发现他的实际函数名改成了 _HandleEventHook@4。
有什么办法可以让他的实际函数名不改变,还是 HandleEventHook ?谢谢了。

解决方案 »

  1.   

    stdcall方式: extern "C" WORD PASCAL EXPORT;
    def文件里:EXPORTS HandleEventHook
      

  2.   

    #if defined(__cplusplus)
             extern "C"
    {
    #endif

    __declspec(dllexport) LPJBID JoyBeeExist(DWORD *dwNum);//函数原型

    #if defined(__cplusplus)
    }
    #endif
      

  3.   

    在.def文件的EXPORTS段下面写上你要导出的函数的名称
    如:EXPORTS
           MyDllFunction()
    这样你的导出函数就不会自动改名了!希望对你有所帮助!
      

  4.   

    不好意思,我还没用过 DEF 文件。我在那个项目的文件夹下找不到任何的 *.def 的文件。
    那么,怎么建立这个 DEF 文件呢?
    是自己新建一个后缀名为 DEF 的文件,再加到工程里面吗?加到那个文件夹下?
    还是用什么工具生成的?
      

  5.   

    补充一句:我用的是 VC.net。但是生成的项目是 Win32 项目里面的 DLL。如果能说说具体的做法就更好了。