Ove*_*Ove 19
__declspec(dllexport)出口一个符号.它使它从DLL外部可用.
__declspec(dllimport)导入符号.它实际上说"此符号未在此应用程序中定义,它需要从DLL文件导入".
您不必声明它extern "C".如果不使用extern "C",则符号将作为C++符号导出,您只能从C++(以及支持调用C++ DLL的语言)调用它.如果使用extern "C",则符号将作为C符号导出,您可以从支持Caling C DLL的语言中调用它.
如果要在C#中使用DLL,则需要使用extern "C".
这是一个很好的教程,向您展示如何在C#中使用C++ DLL:如何编组C++类.我在许多项目中都使用过解决方案A.
另外,这里有一个关于如何在另一个C++应用程序中使用C++ DLL的简短教程:如何在C++中创建和使用DLL.
否 - dllexport意味着您从DLL(或从可执行文件)导出它,以便其他模块(DLL或可执行文件)可以使用该功能.
dllimport用于声明在DLL中实现的函数(或者,再次,可执行).
所以,在典型的情况下,你会有类似的东西:
#ifdef BUILDDLL
#define DLL declspec(dllexport)
#else
#define DLL declspec(dllimport)
#endif
Run Code Online (Sandbox Code Playgroud)
然后每个公共函数将DLL标记为DLL:
DLL int dosomething(int);
Run Code Online (Sandbox Code Playgroud)
然后,当您构建DLL时,您将定义BUILDDLL将所有这些函数标记为dllexport.否则,您将在需要使用该功能的客户端代码中包含相同的标头.它不会定义BUILDDLL,所以它们都会被标记为dllimport,所以当涉及到链接时,它会创建一个指向该DLL的链接,而不是试图从标准库等某个地方满足这些函数.
| 归档时间: |
|
| 查看次数: |
9663 次 |
| 最近记录: |