名称装饰dll函数,#pragma comment(链接器......)

时间:2014-10-23 14:37:27

标签: c++ dll export

我有2个关于导出函数名称的问题。 我浏览了MSDN示例:

Creating and Using a Dynamic Link Library (C++)

  1. 为什么我可以使用未修饰的名称访问dll函数?没有.def文件。正如MSDN所述: “C ++函数的dllexport将公开函数与C ++名称变形”我想知道为什么这样做。
  2. 如果我删除__declspec(dllexport) resp。宏而使用

    #pragma comment(linker, "/EXPORT:"__FUNCTION__"="__FUNCDNAME__)
    

    在函数体内,例如:

     double __stdcall ExternalAdd(double arg1, double arg2)
     {
     #pragma comment(linker, "/EXPORT:"__FUNCTION__"="__FUNCDNAME__)
          return arg1 + arg2;
    } 
    

    我收到链接器错误。为什么呢?

  3. dll上的

    dumpbin /Exports显示:

    ExternalAdd = @ILT+720(?ExternalAdd@@YGNNN@Z)
    
    lib上的

    dumpbin /Headers显示:

    Symbol name  : ExternalAdd
    ...
    Name         : ExternalAdd
    

    非常感谢你的帮助。

0 个答案:

没有答案