C#使用CLR/C++的DLL间接调用Native C++的DLL
C#使用CLR/C++的DLL間接調(diào)用Native C++的DLL
?
開(kāi)發(fā)環(huán)境:win 7??VS2010
???
????簡(jiǎn)介:C#的exe使用CLR/C++間接調(diào)用Native C++的DLL.
?
第一步:創(chuàng)建一個(gè)C#的Console Application工程-->命名“ConsoleApplication1”。
第二步:創(chuàng)建一個(gè)CLR/C++的工程,右擊“ConsoleApplication1”上面的“Solution 'ConsoleApplication1'”-->Add-->NewProject-->CLR-->Class Library -->命名“NetCpp”。
第三步:創(chuàng)建一個(gè)Native C++工程,同上,右擊-->Add --> NewProject -->Win32 -->Win32 Project
?????????-->命名“NativeCpp”-->Next-->選擇"DLL"-->Export symbols.
?
以上創(chuàng)建三個(gè)工程,下面開(kāi)始編寫(xiě)代碼與設(shè)置環(huán)境:
?
第四步:打開(kāi)"NativeCpp.h"在其中加入一些成員函數(shù)與變量;
#define?NATIVECPP_API?__declspec(dllexport)
// This class is exported from the NativeCpp.dll
class?NATIVECPP_API CNativeCpp {
public:
CNativeCpp(void);
// TODO: add your methods here.
int?getA()
{
??return 20;
}
};
第五步:在NetCpp工程中引用NativeCpp的DLL;
右擊NetCpp工程-->Properties
?
?
?
?
第六步:打開(kāi)CLR/C++工程的"NetCpp.h",加入#include?"NativeCpp.h"
#include?"NativeCpp.h"
using?namespace?System;
namespace?NetCpp {
public?ref?class?Class1
{public:
int?getB()
{
CNativeCpp a;
return?a.getA();
}
};
}
第七步:右擊ConsoleApplication1工程的References-->Add Reference-->Projects-->選擇"NetCpp"
????????再把Native C++產(chǎn)生的DLL復(fù)制到C#工程的bin\\Debug\\目錄下.(若想在修改了NativeC++代碼后動(dòng)態(tài)的更新Native C++的DLL,需要在C#工程的屬性中設(shè)置:PropertiesàBuild EventsàPost-build event command line:寫(xiě)入命令:copy??$(SolutionDir)Debug\NativeCpp.dll???$(TargetDir)????)
?
第八步:打開(kāi)ConsoleApplication1工程program.cs。
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
namespace?ConsoleApplication1
{
class?Program
{
static?void?Main(string[] args)
{
NetCpp.Class1?cl =?new?NetCpp.Class1();
Console.WriteLine("getA()" + c1.getB().ToString());
Console.Read();
}
}
}
?
原文地址:http://blog.sina.com.cn/s/blog_a50d2d7401018rxr.html
轉(zhuǎn)載于:https://www.cnblogs.com/heyunxu/p/6480815.html
總結(jié)
以上是生活随笔為你收集整理的C#使用CLR/C++的DLL间接调用Native C++的DLL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 20145206邹京儒《网络对抗》逆向及
- 下一篇: Robot Framework自动化测试