用VC生成动态链接库,所有的函数类似于
extern "C" void __stdcall func1();
生成出来的DLL用dependency看不到任何导出函数,并且没有生成lib文件,为什么?

解决方案 »

  1.   

    extern "C" void func1() __declspec( dllexport );
      

  2.   

    另外一个解决办法:
    加一个.def文件,格式如下:LIB    "abc.lib"
    EXPORTS
         func1  @1
      

  3.   

    要在def文件中定义导出函数,这样才会在dependency中看到。
      

  4.   

    为了兼容性,不考虑__declspec方式oldworm的方法试了一下,生成了lib并能在另外一个test项目中调用,但是运行的时候提示此lib为无效的映象,而我把lib和dll都放到test项目下了。如何生成一个隐式调用的dll呢?
      

  5.   

    extern "C" __declspec( dllexport ) void func1() ;在调用的test项目下:
    #pragma comment(lib,"abc.lib")extern "C" __declspec( dllimport ) void func1() ;
      

  6.   

    搞定了,在def文件中应该用LIBRARY "abc"而不能是"abc.lib",这样才能让lib指向dll,不过很感谢提示。
    但还有一个问题,我现在在dependency中还是看不到函数,仍然是空的?为什么?这样的DLL能否被显式调用?
      

  7.   

    __declspec方式, 牵涉到什么兼容性?
      

  8.   

    声明用:
    extern "C" __declspec( dllexport ) void _stdcall func1() ;
      

  9.   

    VB等其他调用siphonelee(sifone)
    有什么区别?
      

  10.   

    dll中这样写函数:extern "C" __declspec( dllexport ) _stdcall void func1()
    {
       ////////////////////} vb中调用和其他api一样申明就可以了,没有什么兼容性问题。