调用动态库中的c(__stdcall)函数,在c中如下调用:
//declare:
extern __declspec(dllimport) void __stdcall dllfunc(void);//program:
dllfunc();是合法的。我在C++中的声明:
(1)extern "C" __declspec(dllimport) void dllfunc(void);
 编译通过,但是调用出错。因为不是__stdcall
(2)extern "C" __declspec(dllimport) void __stdcall dllfunc(void);
  or extern void __stdcall dllfunc();
 编译通不过:
 error LNK2001: unresolved external symbol _dllfunc@0我该怎么办?

解决方案 »

  1.   

    ertern "C"
    {
        __declspec(dllimport) void __stdcall dllfunc(void);
    }
      

  2.   

    声明
    extern "C" int __stdcall Open();然后在.def中
    EXPORTS
    Open              @1
      

  3.   

    如果动态库中导出的函数声明是:
        extern "C" __declspec(dllexport) __stdcall int mydllfunc(int);
    我在使用动态库时导入:
        extern "C" __declspec(dllimport) int mydllfunc(int);

        extern "C" __declspec(dllimport) int __stdcall mydllfunc(int);两种声明都是正确的吗?两种情况有什么区别?
      

  4.   

    没用过,我一般是用getprocaddress
      

  5.   

    同意,阿东。ref, exports .....
    你的这个问我理解就是要对应。不然,写规则的人就不会这末规定了。:)
      

  6.   

    大家都没有明白我的意思,只好法帖在问。如果动态库中导出的函数声明是:
        extern "C" __declspec(dllexport) __stdcall int mydllfunc(int);
    我在使用动态库时导入:
        //这应该是非法的吧?可是为什么编译器能够通过
        extern "C" __declspec(dllimport) int mydllfunc(int);

        //这应该是正确的,为什么编译时会认为__stdcall mydllfunc(int)是无法解析的外部符号?
        extern "C" __declspec(dllimport) int __stdcall mydllfunc(int);