我用VC++6.0写一个DLL,用depends或dumpbin/exports观察导出函数,发现在函数的前后出现乱码,例如导出一个gettext的函数,用dependS观察时出现的函数名却是诸如??1gettext??的名字。我用了extern "C",问题还是如此请教各位大侠

解决方案 »

  1.   

    C++ 的符号修饰,一般的法则很复杂,以下是添加 extern "C" 的情况:void __cdecl foo(double, int); --> _foo
    void __cdecl foo(double, int); --> _foo@12
      

  2.   

    后一个写错了:void __stdcall foo(void *); --> _foo
      

  3.   

    把代码列出来看看.
    我曾经出现过这样的情况:extern "c"写在.h文件的函数声明里.后来对cpp里的函数名改了一下,忘了改相应的.h文件,问题就和你一样了