|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。c++|程序 本文供应了一个办法,让C++源码和C#源码一同编译链接成一个单一的Assembly。
因为C++供应了IJW办法,同意将旧有C++代码也编译成托管代码,因而这篇小文能够用极小的事情量来完全办理一切C++遗留代码移植到.NET的成绩。
这个办法,再加上上次的小文《您也利用托管C++吗?》,就能够把C++遗留代码移植到.NET的一切办法一扫而光了。
好了,言回正传。
假定一个很复杂的C++程序,它只要一个函数:
//c.h
#pragmaonce
intsqr(intn);
//c.cpp
#include"c.h"
intsqr(intn)
{
returnn*n;
}
为了能让它与C#配合事情,必需为它加个.NET的包装:
//wrapper.cpp
#include"c.h"
namespacewrapper
{
publicrefclasscalc
{
public:
staticintsqr(intn)
{
return::sqr(n);
}
};
}
如今能够用C#往挪用它了:
//cs.cs
usingSystem;
namespacetest
{
publicclassProgram
{
publicstaticvoidMain()
{
Console.WriteLine(wrapper.calc.sqr(11));
}
}
}
如今,怎样将这些源码编译成一个exe文件呢?
用集成情况是很难的,最便利的,仍是创立一个makefile来完成。
因为这个例子很复杂,我用命令行来创立这个exe文件:
clc.cppwrapper.cpp/c/clr
天生c.obj和wrapper.obj
csc/addmodule:wrapper.obj/target:module/out:cs.netmodulecs.cs
天生cs.netmodule
linkc.objwrapper.objcs.netmodule/LTCG/Subsystem:Console/entry:test.Program.Main/out:o.exe
天生o.exe
运转o.exe 显现了局:121
------
沐枫小筑C++与C#夹杂天生.NET程序
参考材料:
1..netmoduleFilesasLinkerInputhttp://msdn2.microsoft.com/en-us/library/k669k83h(VS.80).aspx
2.选择.netmodule输出文件的格局http://msdn2.microsoft.com/zh-CN/library/0zyh2sf2(VS.80).aspx
2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。 |
|