如何在vc+中使用c#Dll+;?
我使用命令行(csc)创建了一个dll。假设dll包含Add(int,int)方法。现在我想在vc++中使用add函数 如何做到这一点 非常感谢你的帮助 这就是我正在做的 vcproj;对于这个项目,我有右键单击和链接器部分添加其他依赖项。添加了dll驻留的路径 main.cpp如何在vc+中使用c#Dll+;?,c#,.net,visual-c++,C#,.net,Visual C++,我使用命令行(csc)创建了一个dll。假设dll包含Add(int,int)方法。现在我想在vc++中使用add函数 如何做到这一点 非常感谢你的帮助 这就是我正在做的 vcproj;对于这个项目,我有右键单击和链接器部分添加其他依赖项。添加了dll驻留的路径 main.cpp using namespace Test void main() { demo d; d.add(5,5); } 错误命名空间测试不存在。 如何解决这个问题 我需要在非托管代码中使用该dll,因为您
using namespace Test
void main()
{
demo d;
d.add(5,5);
}
错误命名空间测试不存在。
如何解决这个问题
我需要在非托管代码中使用该dll,因为您的C#程序集需要ComVisible属性(以及其他一些东西)
MSDN论坛上有.:
你想做的就是
只编译你想要的文件
加载C代码/clr,然后调用
使用C++/CLI。剩下的时间
应用程序将保持本机状态,而那些cpp
您编译的文件/clr将混合使用
本机和CLR。你应该能够
只需使用
C++/CLI语法
一旦在cl.exe上抛出/clr
文件的命令行,在该命令行中
文件,您可以调用任何托管代码
你想要的,不管
它是用VB.net、C#或
C++/CLI。这是迄今为止最简单的
做你想做的事情的方法(打电话给C#
来自您的本地C++应用程序的代码,
虽然它有它的警告和
局限性但总的来说,“它
只是工作”。而且,它比
p/invokes
<>这很大程度上取决于你正在构建的C++应用程序的类型。如果要构建C++/CLI程序集,则需要确保项目中有对C#DLL的引用。一旦这样做了,你应该能够输入代码作为书面假设你有一个这样的演示定义
namespace Test {
public class demo {
public void add(int left, int right) {
...
}
}
}
如果您正在构建正常的、非托管的C++项目,那么必须使用COM互操作来访问程序集。这涉及到在您的C#项目COMVisible中创建演示类型,并将其注册为COM互操作。之后,你可以像其他任何COM组件一样访问它。
如果C++应用程序被管理,那么它当然比这更容易,你可以完全避免COM。@ Matthew Brindley我做了什么,但我得到了一个错误,不能从'const uGuID '转换为'conixWebFrasWorkDaab::DataAccessInterface '。“我应该怎么做?”我在“调用来自本地C++代码的托管DLL”之前进行了很好的操作,但是当我尝试创建一个指针时,我得到以下错误“错误C2259:‘iISWebFraskWorkDAA::DataAccessInterface’:不能实例化抽象类1>,因为以下成员:1>HESReION::Que界面(const IID&,void**):是抽象的“我应该怎么做?实际上错误的原因是”原因:无法从“const”GUID转换为“const IISWebFrameworkDAAB::DataAccessInterface””。我应该怎么做?namespace Test {
public class demo {
public void add(int left, int right) {
...
}
}
}