我使用命令行(csc)创建了一个dll。假设dll包含Add(int,int)方法。现在我想在vc ++中使用add函数?
怎么做?
您的帮助将得到极大的赞赏。
这就是我在做什么。
vcproj;对于这个项目我有右键单击和链接器部分添加其他依赖项。添加dll所在的路径。
的main.cpp
using namespace Test
void main()
{
demo d;
d.add(5,5);
}
错误命名空间测试不存在。
如何解决这个问题?
我需要在非托管代码中使用该dll
答案 0 :(得分:9)
答案 1 :(得分:8)
来自MSDN论坛Calling C# from unmanaged C++:
你想做的是 只编译你想要的文件 加载C#code / clr然后调用 离开使用C ++ / CLI。其余的你 应用程序将保持原生,而那些cpp 你编译/ clr的文件将被混合 原生和CLR。你应该能够 只需使用调用您的C#库 C ++ / CLI语法。
在cl.exe上抛出/ clr 该文件的命令行 文件,您可以调用任何托管代码 你想要的,不管是否 它是用VB.net,C#或 C ++ / CLI。这是迄今为止最容易的 做你想做的事情(打电话给C# 来自您的本机C ++应用程序的代码), 虽然它确实有其警告和 限制。总的来说“它 Just Works“。而且,它比...更快 P /所调用。
答案 2 :(得分:2)
这在很大程度上取决于您正在构建的C ++应用程序的类型。如果要构建C ++ / CLI程序集,则需要确保项目具有对C#DLL的引用。一旦完成,你应该能够按照书面形式输入代码,假设你有这样的Demo定义。
namespace Test {
public class demo {
public void add(int left, int right) {
...
}
}
}
如果要构建正常的非托管C ++项目,则必须使用COM interop来访问程序集。这涉及使C#项目中的演示类型COMVisible并将其注册到COM互操作。之后,您可以像任何其他COM组件一样访问它。