相关疑难解决方法(0)

为何/何时不需要__declspec(dllimport)?

在使用server.dll和client.exe的项目中,我dllexport从服务器dll编辑了一个服务器符号,而不是将其 dllimport编辑到客户端exe中.

仍然,应用程序链接,并启动,没有任何问题.是dllimport不需要的,那么???

细节:

我有这个'服务器'DLL:

// server.h
#ifdef SERVER_EXPORTS
  #define SERVER_API __declspec(dllexport)
#else
  #define SERVER_API // =====> not using dllimport!
#endif
class  SERVER_API CServer {
   static long s;
   public:
   CServer();
};

// server.cpp
CServer::CServer(){}

long CServer::s;
Run Code Online (Sandbox Code Playgroud)

这个客户端可执行文件

#include <server.h>
int main() {
   CServer s;
}
Run Code Online (Sandbox Code Playgroud)

服务器命令行:

cl.exe /Od  /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" 
 /D "SERVER_EXPORTS" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" 
 /Gm /EHsc /RTC1 /MDd /Yu"stdafx.h" 
 /Fp"Debug\server.pch" /Fo"Debug\\" /Fd"Debug\vc80.pdb" 
 /W3 /nologo …
Run Code Online (Sandbox Code Playgroud)

c++ dllimport visual-c++-2005 declspec

37
推荐指数
1
解决办法
9279
查看次数

Windows&C++:extern&__ declspec(dllimport)

"extern"和"__declspec(dllimport")之间有什么区别/关系?我发现有时候有必要同时使用它们,有时候就足够了.

我是对的吗

  1. "extern"用于静态链接库,
  2. "__declspec(dllimport)"用于DLL(动态链接库),
  3. 两者对于各自的链接类型实际上都是相同的工作,
  4. 你需要在使用导入库时使用它们(小的.lib文件有助于与dll链接)?

c++ windows dll linker

22
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×2

declspec ×1

dll ×1

dllimport ×1

linker ×1

visual-c++-2005 ×1

windows ×1