【发布时间】:2010-10-22 05:12:03
【问题描述】:
我想知道如何从不支持 clr 的 ProjectB::ClassB::FuncB() 中准确调用 ProjectA::ClassA::FuncA() 中的函数,该函数是带有 /clr 的 Win32 .lib并且是一个纯Win32项目。 这两个项目都在同一个解决方案下。
首先,这是我尝试过的: 1. 使用 .lib 创建 ProjectA 2. 将.lib 路径添加到 ProjectB 属性(在 Linker:Input:Add.Dependencies 中) 3.我在ProjectB中为ProjectA创建的.lib添加了.h 4. 在 ProjectB::ClassB 中为 ProjectA::ClassA 创建对象并尝试调用 FuncA()。
我收到以下错误:
错误 1 错误 LNK2019:无法解析的外部符号“public: static void __cdecl ClassA::FuncA(void)” (?FuncA@ClassA@@SAXXZ) 在函数“public: static void __cdecl ClassB::FuncB(void)”中引用" (?FuncB@ClassB@@SAXXZ) Helper.obj
我在 ProjectB 中成功使用了第三方 .lib 。我遵循相同的过程,但失败了;唯一的区别是 ProjectA() 是 CLR 支持。
我错过了什么吗?请赐教;-)
谢谢!
【问题讨论】:
-
您是否必须有 CLR 支持才能调用托管程序集。
-
@rerun:我在 ProjectA (.lib) 中支持 CLR,我在 ProjectB 中使用它。所以,ProjectA 有 CLR 支持,ProjectB 没有。 ProjectA 仍然是 Win32 项目,只是我添加了 CLR 支持。
标签: .net c++ winapi interop clr