这几天需要给LabWindows程序写一个DLL库。在写这个库的时候发现了一个问题。在vc中创建一个Win32 Dynamic-Link Library工程。导出一个函数fnTest。
TEST_API int fnTest();
然后为了不会改变名称,我添加了test.def文件。但是这个时候Labwindows提示说找不到_fnTest
后来我在把函数的定义中改成了
extern "C" TEST_API int fnTest();
就可以在LabWindows中使用了。我用fi看了一下,有extern"C" 和没有extern "C"的两种情况的DLL文件的export表。
都是一样的,但是为什么没有extern "C"就不能用呢???

解决方案 »

  1.   

    顺便说一下vc里面的代码是用c写的,但是估计用c++编译的。
    labwindows是纯c的是不是.lib文件里面出的什么问题????
      

  2.   

    各种语言之间的一个共用标准(COFF)。
      

  3.   

    因为你选择的是非mfc的dll,所以需要导出函数extern "C" int __declspec(dllexport)  fnTest();
      

  4.   

    我记得原来在汇编里面调用这个的时候好像没有用到过extern啊。。
      

  5.   

    咳咳咳,不加extern "C"的话,导出函数会以C++来命名,你用depends一下就能看出有什么不同了。
    有时候就是这么简单的原因,跟其他什么MFC啦,什么LIB啦都没关系。