【发布时间】:2013-04-03 13:01:38
【问题描述】:
我尝试按照this walkthrough 使用 Visual C++ 2012 创建一个 dll,但我失败了。当我尝试在不同的项目中导入构建的 dll 作为参考时,出现此错误:A reference to '***.dll' could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component.
我不明白我在代码中的错误是什么以及为什么会出现此错误。这是我的头文件和 cpp 文件:
DLLEXPORT.H
__declspec(dllexport) bool setMute();
__declspec(dllexport) bool setActive();
DLLEXPORT.CPP
#include "DLLEXPORT.H"
bool setMute(){
//some stuff
}
bool setActive(){
//some stuff
}
此外,我也尝试通过这个solution解决问题,但是我得到了这个错误:TlbImp : error TI1002 : The input file '****.dll' is not a valid type library.
【问题讨论】:
-
将此名称也添加到导出定义的文件中
-
您的 DLL 不是 .NET 程序集,也不是 COM 服务器,因此无法将其添加为引用。您需要使用 [DllImport] 来使用它。
-
通过这种方式创建的 Dll 应使用链接器附加依赖项添加到客户端 C/C++ 项目中,而不是作为 .NET 或 COM 引用。您需要将 .lib 文件添加到链接器列表中。
-
或者您可以将 DLL 项目添加到同一个解决方案中,然后从您的目标项目中添加对 DLL 项目的引用。
-
在我看来,更准确的标题应该是:“如何使用托管代码中的 DLL?”
标签: c++ visual-c++ dll dllexport