c++ - 无法使用 Visual C++ 2012 创建有效的 dll

标签 c++ visual-c++ dll dllexport

我尝试按照 this walkthrough 使用 Visual C++ 2012 创建一个 dll,但我失败了。当我尝试在不同的项目中导入内置的 dll 作为引用时,我收到此错误:无法添加对“***.dll”的引用。请确保该文件可访问,并且它是有效的程序集或 COM 组件。

我不明白我的代码有什么错误以及为什么会出现此错误。这是我的头文件和 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.

最佳答案

Microsoft 世界中有不同种类的 DLL(和 EXE): native DLL,由 native C++(或 C)和程序集生成,包含 .NET 可执行内容。您阅读的演练将为您提供 native DLL,而您尝试执行的引用仅适用于 .NET 程序集(和 COM 组件)。

因此,您要么必须构建一个 .NET DLL(它将是 C++/CLI 而不是 native C++),要么将您的 native DLL 链接到 native 应用程序(或导入它)而不是在 .NET 项目中引用它。

关于c++ - 无法使用 Visual C++ 2012 创建有效的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15788090/

相关文章:

c++ - 在大项目中使用 c++11 std::tuple

java - 将 .dll 添加到 java 构建路径

visual-c++ - 如何检测 VC++ 2008 可再发行组件?

c++ - 需要有关使用 Visual C++ 创建图形绘图的建议

c++ - 如何使用循环清理此代码?

dll - 如何使用 CMake 将 DLL 文件复制到与可执行文件相同的文件夹中?

c++ - 通过 PAnsiChar (char *) 传递 AnsiString 是否明确需要空终止符?

c++ - 作为副作用的变量声明

c++ - 指向 const 对象作为数据成员的指针

c++ - 运算符链接,为什么要增长左分支?