dll头文件代码:
#ifndef API_DLL_H
#define API_DLL_H
int WINAPI SumNumber(int a,int b);
#endifdll源文件代码:
int SumNumber(int a,int b)
{
return a+b;
}
dll .def文件:
LIBRARY "Dll"
EXPORTS
     SumNumber  @1DllTest工程中把整个dll files添加到工程
把dll的头文件,.lib,.dll文件都拷到DllTest中。
然后在DllTest中新建个Dll的文件夹,把上面三个文件都放在这个Dll文件夹中。
然后在调用这个函数的时候引入头文件,
报错:
DllTestDlg.obj : error LNK2001: unresolved external symbol "int __stdcall SumNumber(int,int)" (?SumNumber@@YGHHH@Z)如果不加WINAPI没问题,一加就出现这样的错误。菜鸟寻求帮助!

解决方案 »

  1.   

    VC工程默认的调用约定是_cdecl,这个在C/C++->Advanced可以看到。而#define WINAPI __stdcall,两个调用约定不一样,找不到对应的函数。
    你也可以在函数定义时强制成__stdcall
      

  2.   

    1、加上调用约定
    2、将DLL拷贝到exe当前路径下
      

  3.   

    #ifdef YHCONFIGTEST_EXPORTS
    #define YH_NETSDK_API __declspec(dllexport)
    #else
    #define YH_NETSDK_API __declspec(dllimport)
    #endif
    extern "C" {//初始化,并获得操作句柄
    YH_NETSDK_API long Init();}
      

  4.   

    dll源文件代码:
    int  WINAPI SumNumber(int a,int b)
    {
    return a+b;
    }