在dll导出函数的时候不加extern "c". 其他程序如何调用该dll, 我用静态调用, 链接出错。 谢谢

解决方案 »

  1.   

    完整导出C语言风格的函数 extern "C" _declspec(dllexport) void XXXFun()导出C++语言风格的函数 _declspec(dllexport) void XXXFun()可能是没找到.h对应的lib文件.
      

  2.   

    找到lib文件了,在Cpp文件里我用 C语言风格的函数 extern "C" _declspec(dllexport) void XXXFun()的链接 是没问题的, 但是如果不加 extern "C". 就链接不上
      

  3.   

    刚测试了一下,这样用应该没问题。dll:BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
     )
    {
        return TRUE;
    }_declspec(dllexport) int Add(int a,int b)
    {
    return a+b;
    }exe:#pragma comment(lib,"dll.lib")_declspec(dllimport) int Add(int a,int b);BOOL CTestApp::InitInstance()
    {
    int sum = Add(5,7);
    }结论:导出C语言风格的函数 extern "C" _declspec(dllexport) void XXXFun()
    导入C语言风格的函数 extern "C" _declspec(dllimport) void XXXFun()导出C++语言风格的函数 _declspec(dllexport) void XXXFun()
    导入C++语言风格的函数 _declspec(dllimport) void XXXFun()要成对使用。
      

  4.   

    在dll导出函数的时候不加extern "c". 你的函数名字就不是XXXFun了,你用depends自己看把,当然找不到XXXFun函数