C++调用C#类库dll

众所周知,如果要用Java来调用C#,则最好的方法是通过将C#封装成webservice,然后让Java来调用webservice。但是还有一种方法可行,那就是通过JNI来调用C++,然后C++在后台对C#类库进行调用。这里我就想说一下C++调用C#的操作流程。
(1)先新建一个C#的类库项目,名称可以随意起,这里取名为CSharpLibrary,然后内部新建一个类,名称为SimpleClass,这样,整个类的代码为
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSharpLibrary
{
public class SimpleClass
{
private String name;

public String Name
{
get { return name; }
set { name = "My Name is:" + value; }
}
}
}
当然了,上述的代码是一个最简单的类,各位同学也可以定义一个教复杂的类也可以。
将上述工程编译运行之后,在工程的源文件的bin\Debug文件夹下应该能够看到一个dll,文件的名称是CSharpLibrary.dll。
(2)新建一个C++的Win32控制台应用程序,名称就叫CPlusPlusDemo,创建过程中都默认即可,然后运行一下这个工程,在工程的源代码出会生成一个Debug的文件夹,将第(1)步生成的dll文件以及其对应的.pdb文件(名称是CSharpLibrary.pdb),都拷贝到这个Debug文件夹下。这一步简历的CPlusPlusDemo项目的源文件下面有一个CPlusPlusDemo.cpp的文件,在文件的第二行,也就是#include "stdafx.h"行之后另起一行,写入
#using "Debug\CSharpLibrary.dll"
using namespace CSharpLibrary; (这一行可写可不写),
然后在int _tmain(int argc, _TCHAR* argv[])方法中写入:
SimpleClass ^c = gcnew SimpleClass();
//声明一个你应用的C#的类得实例 这里如果前面没有使用using namespace
//CSharpLibrary,这里的类前边就要加上命名空间CSharpLibrary,那这一行应该是
//CSharpLibrary::SimpleClass ^c = gcnew CSharpLibrary::SimpleClass();
c->Name = "zzj";
printf("%s\n", c->Name);
int a;
scanf("%d", &a);
return 0;

这样,等上述两步都操作完成,就可以生成CPlusPlusDemo,然后等生成成功之后,设置该项目为启动项目之后,就可以点击“启动调试”按钮,这样就能够得到输出结果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值