谷歌搜索后,我知道Dllimport使该功能可用于其他模块,
用外部“c”标识符声明函数是否是强制性的?
另外,Dllexport表示,Dll本身在编译时会使用该函数。所以默认情况下
DLL中存在的函数是dllexport吗?
最佳答案
__declspec(dllexport)
导出符号。它使它可以从DLL外部使用。__declspec(dllimport)
导入符号。它实际上说:“此符号未在此应用程序中定义,需要从DLL文件中导入”。
您不必使用extern "C"
进行声明。如果不使用extern "C"
,则该符号将被导出为C++符号,并且您将只能从C++(以及支持调用C++ DLL的语言)中调用它。如果使用extern "C"
,则该符号将被导出为C符号,并且您将能够从支持校准C DLL的语言中对其进行调用。
如果要在C#中使用DLL,则需要使用extern "C"
。
这是一个出色的教程,向您展示了如何在C#中使用C++ DLL:How to marshal a C++ class。我在工作中的许多项目中都使用过解决方案A。
另外,这是一个简短的教程,介绍如何在另一个C++应用程序中使用C++ DLL:How to create and use DLL in C++。