新建了一各dll工程,工程名为"Server",Server.h内容如下:
#ifdef MY_SERVER_API#else
#define MY_SERVER_API extern "C" __declspec(dllimport)
#endif
MY_SERVER_API  void SaySomething();然后Server.cpp中相关内容如下:#define MY_SERVER_API  __declspec(dllexport)
#include "Server.h"MY_SERVER_API void SaySomething()
{
  printf("mom you always were the perfect fan");
}然后把生成的Server.lib和Server.dll全拷到了调用工程的工程目录下,且在调用工程中#include "Server.h",但一调用SaySometing方法,还是链接不成功!!unresolved external symbol "__declspec(dllimport) void __cdecl SaySomething(void)" (__imp_?SaySomething@@YAXXZ)
究竟那里出问题了?困扰很久了,希望这次能得到解决!

解决方案 »

  1.   

    在你的CPP文件里加上 
    #pragma comment( lib, "Server.lib" )或项目的链接库里添加Server.lib
      

  2.   

    把lib文件拷到工程目录下是没有的,还需要在工程里加入lib才行,或者在代码里写上:
    #pragma comment(lib, "server.lib")
      

  3.   

    你光拷贝过去,vs哪知道链接那个lib
      

  4.   

    两个问题:
    1、把头文件中的 extern "C" 去掉
    2、强制使用 stdcall 调用约定,例如可以在函数的申明和定义处加上 WINAPI 宏
      

  5.   

    显示调用最好加上extern "C"。加extern "C"的函数名就是原函数名;不加extern "C"的函数名会被改变(函数名两边多了些字符),因此在使用GetProcAddress得到函数指针时需使用被改变的函数名。隐式调用不能加extern "C"。