MyDll.h:
    #ifdef _MYLIB 
    #define MYLIB extern "C" __declspec(dllexport)
    #else
    #define MYLIB extern "C" __declspec(dllimport)
    #endif
    MYLIB  int MyFunction();
MyDll.cpp
    int MyFunction()
    {
        return 100;
    }
编译通过,VC里调用正常,而VB里错误,因为调用约束不为_stdcall吧?
那我怎样将上面的代码改为_stdcall约束?
注:我不喜欢用.def文件将函数名列出。如果
int WINAPI MyFunction();且在.def中列出了MyFunction。那在VB中可用。

解决方案 »

  1.   

    我试了, 把MYLIB  int MyFunction();改为 MYLIB  int __stdcall MyFunction();就可以在VB中用,但VC中肯定不能用,VC是__cdecl调用呀。怎样可以写个函数既能在VC中用,又能在VB中用?请高手指点。
      

  2.   

    在VC工程设置中设置为__stdcall,就可以了.
    MyDll.h:
        #ifdef _MYLIB 
        #define MYLIB extern "C" __declspec(dllexport)
        #else
        #define MYLIB extern "C" __declspec(dllimport)
    #endif
    MYLIB  int __stdcall MyFunction();MyDll.cpp
    MYLIB  int __stdcall MyFunction()
        {
            return 100;
        }
      

  3.   

    to dongfa(阿东) 
    在VC工程设置中设置为__stdcall,就可以了.
    怎样设置?
      

  4.   

    菜单->project->settings->c\c++->category->code generation->calling convetion