众所周知,如果要用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,然后等生成成功之后,设置该项目为启动项目之后,就可以点击“启动调试”按钮,这样就能够得到输出结果了。
(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,然后等生成成功之后,设置该项目为启动项目之后,就可以点击“启动调试”按钮,这样就能够得到输出结果了。