VC的DLL 给 VB调用, def声明文件在VC中 是否 是必须的?

解决方案 »

  1.   

    DEF文件的作用主要定义导出函数的,用DEF的好处在于它可以强制约定函数名,所以在VC的DLL中写DEF文件应该是比较方便的一种做法,但是并不是必须的,用extern "C"其实也可以达到目的
      

  2.   

    不是,有LoadLibrary加载DLL和GetProcAddress获取函数地址两个API可用
      

  3.   

    要是不是一个编译器这同时编译这个dll和使用这个dll的话,你看下编译连接的时候可以正确的连接么?
      

  4.   

    引用 2 楼 wltg2001 的回复:
    DEF文件的作用主要定义导出函数的,用DEF的好处在于它可以强制约定函数名,所以在VC的DLL中写DEF文件应该是比较方便的一种做法,但是并不是必须的,用extern "C"其实也可以达到目的
    如果调用约定改变了就不行了
    ===================
    VB调用DLL中的函数一般都是用_stdcall方式的,所以用extern "C" _stdcall说明应该是可以的,另外调用约定不同,对函数名也是有影响的。
    总之一句话, 并不一定非要用DEF文件。一般写成:extern "C" int __declspec(dllexport) __stdcall add(int x, int y);
    这样的形式应该没有问题。
      

  5.   

    么如果要导出类的成员函数呢?
    =========
    我觉得VC写VB能用的DLL最好还是写Win32 DLL,我上面所说的也是基于Win32 DLL的,导出类成员函数之类我平时很少涉及,所以不知道。
      

  6.   

    VB里面无法创建C++类,所以不用考虑是否能调用类成员函数。