C#使用CLR/C++的DLL间接调用Native C++的DLL

开发环境:win 7  VS2010

简介:C#的exe使用CLR/C++间接调用Native C++的DLL.

第一步:创建一个C#的Console Application工程-->命名“ConsoleApplication1”。

第二步:创建一个CLR/C++的工程,右击“ConsoleApplication1”上面的“Solution 'ConsoleApplication1'”-->Add-->NewProject-->CLR-->Class Library -->命名“NetCpp”。

第三步:创建一个Native C++工程,同上,右击-->Add --> NewProject -->Win32 -->Win32 Project

-->命名“NativeCpp”-->Next-->选择"DLL"-->Export symbols.

以上创建三个工程,下面开始编写代码与设置环境:

第四步:打开"NativeCpp.h"在其中加入一些成员函数与变量;

#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

第六步:打开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++产生的DLL复制到C#工程的bin\\Debug\\目录下.(若想在修改了NativeC++代码后动态的更新Native C++的DLL,需要在C#工程的属性中设置:PropertiesàBuild EventsàPost-build event command line:写入命令:copy  $(SolutionDir)Debug\NativeCpp.dll   $(TargetDir)    )

第八步:打开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

最新文章

  1. 基于fastweixin的微信开发环境搭建(一)
  2. python 获取日期
  3. Sigar使用
  4. 用 unoconv 将 xls 转换成 csv
  5. 【iCore3双核心板】【4.3寸液晶驱动板爆照!】
  6. 什么是Gn Gi Gb!
  7. IDEA 创建Java Web项目
  8. SQL的自增列如何重置
  9. [置顶] 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
  10. Vue.js 基础示例
  11. JNI编程(一) —— 编写一个最简单的JNI程序
  12. session过期后自动跳转到登陆页
  13. Stars(树状数组+线段树)
  14. 联合县城市,采用ajax,而使用ul模拟select下拉
  15. Hql没有limit,替换方案
  16. OC可点击的两种轮播图效果
  17. Eclipse报错Resource '/.org.eclipse.jdt.core.external.folders/.link5' already exists.
  18. 小米平板8.0以上系统如何不用root激活xposed框架的流程
  19. 关于synchronized的同步操作
  20. Javascript 将字符串替换为特定的规律的字符串

热门文章

  1. 事务 ( 进程 ID 60) 与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品
  2. javaweb各种框架组合案例(一):maven+spring+springMVC+jdbcTemplate
  3. spring boot中使用servlet、listener和filter
  4. play框架之简介
  5. 在centos7上安装Docker CE
  6. Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解)
  7. Django之Cookie Session详解,CBV,FBV登陆验证装饰器和自定义分页
  8. python函数之 range()
  9. Java多线程同步工具类之Semaphore
  10. 每日一问:谈谈 SharedPreferences 的 apply() 和 commit()