谷歌搜索后,我知道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++

09-25 22:19