C#使用CLR/C++的DLL间接调用Native C++的DLL
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
转载于:https://www.cnblogs.com/heyunxu/p/6480815.html
C#使用CLR/C++的DLL间接调用Native C++的DLL相关推荐
- pb调用c语言dll,PB调用C#编写的Dll类库
在c# 中编写com组件,供PB调用实例 前言:c#中写的dll直接是不能被pb调用的,只有写成com组件才可以调用,所以用c#写dll时要注意. c#中新建类库 类库类型为通用类库,项目名为AddC ...
- C#调用非托管C++DLL:通过托管C++DLL间接调用
现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额.因此很多以前搞VC++开发的人都转向用更强大的VS.Net.在这种情况下,有很多开发人员就面临了如何在C#中使用C++开发好的类 ...
- java调用c写的dll jna_jna调用c编写的dll
我们团队目前开发的产品是用java语言编写的,大家都知道,java编写的代码随便都可以被反编译,导致别人可能会看到你"裸奔"的样子.所以,为了避免这种安全隐患,团队最终商定,将部分 ...
- C#调用非托管C++DLL:直接调用法
在实际软件开发过程中,由于公司使用了多种语言开发,在C#中可能需要实现某个功能,而该功能可能用其他语言已经实现了,那么我们可以调用其他语言写好的模块吗?还有就是,由于C#开发好的项目,我们可以利用re ...
- c 调用易语言dll字节集,总结VC与易语言DLL互相调用的方法
在编写程序的时候往往需要调用到别的语言编写的DLL文件,下面先来看一下在易语言中如何调用VC编写的DLL呢,首先用VC编写一个简单的DLL文件,代码如下: int WINAPI add(int x,i ...
- 怎么多次调用c语言dll,c-如何从注入到同一程序的另一个.dll中调用...
在过去,我们使用CreateRemoteThread并将LoadLibraryA用作lpStartAddress的地址(该地址在所有进程中都相同).诀窍是使用VirtualAllocEx分配要注入的D ...
- 易语言如何调用c dll文件,易语言调用C++写的DLL
直接调用会弹出堆栈错误的信息,原因是VS默认是__cdcel方式,而易语言是__stdcall,所以调用约定不一致导致堆栈错误. 解决方案很简单,易语言声明DLL函数时"在库中对应命令名&q ...
- QT调用C#写的Dll
QT调用C#写的Dll 参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数 ...
- QT调用C++写的Dll
C#写的dll是没有dllMain入口函数的,是一种中间语言,需要.Net运行时进行做本地化工作,因此如果要调用C#写的dll,需要依赖.Net运行时,然而Qt中还无法直接调用.Net运行时,最好的方 ...
最新文章
- windows下sqlite3的基本操作
- Linux系统无线鼠标不能用,手把手教你win7系统无线鼠标不能用的处理方案
- http get 传参最大长度介绍
- Spring boot自动配置使用
- java入门第六天课程_Java基础知识——第六天
- 王爽汇编第二册:将每个单词的前四位改为大写字母
- 作者:钱卫宁(1976-),男,华东师范大学计算机科学与软件工程学院教授、博士生导师。...
- 快速傅立叶变换(FFT)的海面模拟
- Google Maps 补丁绕过、得双倍奖金这么简单?我陷入了自我怀疑
- 此流上不支持超时。_10分钟了解线程池,阿里再也不担心我线程池资源耗尽了...
- SQL数据库连接超时时间已到
- (全程图解)Axure RP8.0安装、破解、汉化教程
- Maven-仓库概念,下载与配置
- fc坦克大战游戏完美复刻
- 台式计算机打印机共享,电脑不能共享打印机怎么办 电脑设置共享打印机详细教程...
- Active: inactive (dead)
- sql UPDATE的时候可以使用join吗
- ologit 平行线检验 brant踩坑历程not all independent variables can be retained in binary logits brant test cann
- 两张(多张)图片合成一张图片
- PMBOK(第六版) 学习笔记 ——《第一章 引论》
热门文章
- python polar函数_Python可视化很简单,可是你会吗?python绘制饼图、极线图和气泡图,让我来教教你吧,一文教会!!!...
- java usb 无驱打印_Windows Usb 无驱动打印
- 图片资源 php,php URL图片资源传参生成对应尺寸图片
- android json 解析图片,JSON解析并获取android中的图像
- 算法转换c语言程序,(转)C语言实现卡尔曼滤波算法程序
- 软件可靠性指标mtbf测试评估,软件可靠性评估.pdf
- 背包问题 小灰_小背包问题
- observable_Java Observable countObservers()方法与示例
- js数字最多保留两位小数_8085微处理器中最多两个8位数字
- Python---利用蒙特.卡罗方法计算圆周率近似值