#pragma comment(lib,"dllTest.lib") 
//在link时,应链接dllTest.lib文件
//Lib库中仅仅是关于其对应DLL文件中函数的重定位信息
extern "C" int _declspec(dllimport) add(int x,int y);
int main(int argc, char* argv[])
{
    int result =  add(2,3);    
printf("%d",result);

return 0;
}
#pragma comment(lib,"dllTest.lib") 导入的lib库中已经包含导出函数的符号等信息了,为什么还要声明导入函数(extern "C" int _declspec(dllimport) add(int x,int y))呢,这不多余了吗???

解决方案 »

  1.   

    extern "C" int _declspec(dllimport) add(int x,int y)
    这个好比一个函数声明...
    ,你若不写,编译器在编译阶段,识别不出来..
    写成这样也可以 extern "C" int add(int x,int y)
      

  2.   

    但是在lib库中已经有这些符号信息了呀
      

  3.   

    刚才调试了一下,#pragma comment(lib,"dllTest.lib")链接时候才执行,如果把他注掉,出链接错误,编译可以过去,也就是说,声明是编译的时候用,lib库是链接时候用,两个使用的场景不同,谢了,分给你。
      

  4.   

    但如何在编译的时候,我就知道有这个函数呢?你可以这样想,把lib看成一个cpp文件,里面有一些函数,在另一个cpp中引用的时候,要写函数声明,那样才可以调用