【发布时间】:2016-06-09 01:22:33
【问题描述】:
我正在从托管 C++ 调用非托管 DLL。 DLL 具有多个本机依赖项。我正在尝试通过 Visual Studio 编译它。
我做了以下事情:
将包含 DLL 和 .lib 的目录添加到属性 -> VC++ 目录 -> 库目录
将非托管 .lib 添加到属性 -> 输入 -> 附加依赖项
但是,我引用的函数出现链接错误。除了库的头文件外,我没有在项目中添加任何DLL或lib。
更新: 所以它能够找到.lib,因为如果我在附加依赖项中提供一个虚假的.lib,我会得到.lib 的编译错误未找到。我的错误是 "unresolved token ...." 。
【问题讨论】:
-
你需要在你的项目中指定lib文件。此外,在构建过程中不使用 DLL,因此在您的描述中提及它们是一个有争议的问题。 DLL 在运行时使用,而不是在构建时使用。
-
如果您解决了这个问题,请发布解决方案,我最近一直在努力解决这个问题。我在另一个编译器中编写了一个非托管 DLL,它在使用 PInvoke 的 C# 中工作得很好,并且在托管 C++ 中编译得很好,但是 .lib 不会正确链接,链接器正在寻找一些糟糕透顶的 clr-如果我仅在 VC++ 中编写 DLL,则似乎只有 VC++ 会产生基于导入名称。我必须使用非 VC++ 编译器,VC++ 不是一个选项(无法迁移代码),但我需要 DLL 在托管 C++ 中正确工作。使用
.def文件没有帮助,或者我的语法不正确 -
发布链接器错误信息!