C++调用C#的DLL实现方法
SwfDotNet是C#编写的,这是个特别好的读写Swf文件的库。本文讲述了在C++项目中,怎么让C++调用C#的DLL动态链接库文件。
具体的实现步骤如下:
一、创建C# DLL,需要指定应用类型为“类库”,代码:
namespace CSLib { public class Class1 { private string name; public string Name { get { return name; } set { name = "Your Name: " + value; } } } }
二、C++客户程序,是个控制台应用,代码:
#using "..\debug\CSLib.dll" using namespace CSLib; int _tmain(int argc, _TCHAR* argv[]) { Class1 ^c = gcnew Class1(); c->Name = "zzj"; printf("%s\n", c->Name); return 0; }
三、这里有几点要记住:
1.使用#using引用C# DLL,而不是#include;
2.别忘了using namespace CSLib;
3.使用C++/clr语法,采用正确的访问托管对象,即:使用'^',而不是星号'*'。
相关推荐
-
C++调用C#的DLL程序实现方法
把C#编译成DLL或者Axtive控件,再由C调用!比如使用C++调用C#的DLL. SwfDotNet是.net下输出flash的类库.SwfDotNet是C#编写的,作者的C#水平,真是令我佩服.这是个特别好的读写Swf文件的库.但是,我要用在C++项目中,怎么让C++调用C#的DLL呢.今天一上午都在琢磨这个问题,耽误了很多时间,原因是编译是出现:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失. 接着就是
-
C语言代码中调用C++代码的方法示例
由于历史原因,以及不同开发人员的技术偏好,C语言和C++语言都有一些独有的非常有价值的项目,因而两种语言的互操作,充分利用前人造的轮子是一件非常有价值的事情. C++代码调用C代码很简单,只要分别在包含的C头文件的开头和结尾加上如下的两个块: #ifdef __cplusplus extern "C" { #endif 和 #ifdef __cplusplus } #endif 即可. 然而为了支持类.重载等更加高级的特性,在编译C++代码时,C++符号会被修饰.我们dump Linu
-
Java如何调用C++ DLL库
最近做了一个网页端人脸识别的项目,用c++写了人脸识别的算法,但是在网页端要使用java后台,这其中就涉及到了java调用dll的问题.下面是小编通过查阅相关资料,实现的一个简单例子. 1.第一步,先在Java中新建一个类 如上图,其中注意这句System.loadLibrary("javaCallcpp");,这就是加载dll文件的代码了.然后我们需要dll中实现下面定义的加减乘除方法. 2.编译文件,文件名为Java2cpp.java,首先编译成class文件,如果用的是eclip
-
C++调用C函数实例详解
C++调用C函数实例详解 前言:以前见到extern "C"这样的语句,只是简单地知道跟外部链接有关,但是没有深刻理解它的意思. 首先,为什么要使用extern "C"修饰符? C++调用其它语言的函数,由于编译器生成函数的机制不一样,所以需要经过特殊处理,才可以调用.调用C语言的函数,需要在函数声明的地方语句extern "C".如果不使用该语句,在链接的时候,编译器就会报以下这种错误. Test.obj : error LNK2019: 无法
-
在C语言中调用C++做的动态链接库
今天在做东西的时候遇到一个问题,就是如何在C语言中调用C++做的动态链接库so文件 如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明, 那么你如何用c调用呢,别着急,本文通过一个小小的例子,让你能够很爽的搞定. 链接库头文件: head.h class A { public: A(); virtual ~A(); int gt(); int pt(); private: int s; }; firstso.cpp #include <iostream> #include &
-
C++调用C#的DLL实现方法
SwfDotNet是C#编写的,这是个特别好的读写Swf文件的库.本文讲述了在C++项目中,怎么让C++调用C#的DLL动态链接库文件. 具体的实现步骤如下: 一.创建C# DLL,需要指定应用类型为"类库",代码: namespace CSLib { public class Class1 { private string name; public string Name { get { return name; } set { name = "Your Name: &qu
-
java使用jna调用c#中dll的方法详解
前言 JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码.开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射. 优点 JNA可以让你像调用一般java方法一样直接调用本地方法.就和直接执行本地方法差不多,而且调用本地方法还不用额外的其他处理或者配置什么的,
-
易语言调用模块和DLL的方法教学
易语言是一门中文编程语言,虽然其功能已经非常完善,但是很多时候为了方便甚至有时候是必须调用一些模块和DLL文件,能够极大的提高编程效率.作为一个易语言新手不建议频繁的调用模块,这样不利于学习,但如何调用时必须得学会. 1.打开易语言,新建一个Windows桌面程序.本例以改变进度条颜色为例,在主窗口拖放一个"进度条"和"按钮"控件,如下图,"进度条"显示方式设置成成"连续"且位置改为50:"按钮"标题改为&
-
Python调用C# Com dll组件实战教程
之前公司有套C# AES加解密方案,但是方案加密用的是Rijndael类,而非AES的四种模式(ECB.CBC.CFB.OFB,这四种用的是RijndaelManaged类),Python下Crypto库AES也只有这四种模式,进而Python下无法实现C# AES Rijndael类加密效果了. 类似于这种C# 能实现的功能而在Python下实现不了的,搜集资料有两种解决方案,第一种方式,使用IronPython 直接调用C# dll文件,教程网上很多,不在赘述了,这种方式有个缺点,用的是ir
-
C#中加载dll并调用其函数的实现方法
C#编程中,调用封装dll中的函数是高频使用的.那么,如何在程序中加载dll并调用其中的函数呢?更进一步的,如何在主程序中对自己封装的dll中的函数进行调试呢? 加载dll-添加引用 添加引用的意思是让程序生成时根据配置的路径去加载相应的dll.其引用的步骤如下图所示: 解决方案->引用-> 添加引用-> 浏览-> 选择dll所在的路径->确定 导入命名空间.实例化对象.调用函数 只有导入该dll的命名空间,才能使用该空间下的类.因此,在引用了dll之后的第一步是导入命名空间
-
PHP调用C#开发的dll类库方法
有的时候,我们需要在php中利用到其他语言编写的dll类库,如C#编写的dll,方法就是利用PHP new COM方法来调用,在调用之前先要把dll库注册并把程序集放入到全局缓存中. 1. 创建一个 C# Class Library ,命名为:HelloWorld 2. 打开项目的属性,在点选左边的 "Application"(就是第一个tab) , 然后点击Assembly Information 按钮 ,在弹出的Dialog中, 必须在底部勾上: Make assembly COM
-
使用python来调用CAN通讯的DLL实现方法
由于工作上的需要,经常要与USBCAN打交道,但厂家一般不会提供PYTHON的例子,于是自己摸索地写一个例子出来,以便在工作上随时可以使用PYTHON来测试CAN的功能.这里的例子是使用珠海创芯科技有限公司的USBCAN接口卡,他们提供一个ControlCAN.dll,也提供了一个.h文件,如下: #ifndef CONTROLCAN_H #define CONTROLCAN_H ////文件版本:v2.00 20150920 //#include <cvidef.h> //使用CVI平台开发
-
Windows系统Python直接调用C++ DLL的方法
环境:Window 10,VS 2019, Python 2.7.12, 64bit 1,打开 VS 2019,新建C++ Windows 动态链接库工程 Example,加入下列文件,如果Python是64位的则在VS中 Solution platforms 选择 x64 编译成64位的 DLL: Example.h #pragma once #ifndef CPP_EXPORTS #define CPP_EXPORTS #endif #ifdef CPP_EXPORTS #define CP
-
vs2019 实现C#调用c++的dll两种方法
1.托管与非托管的区别 链接地址(仅供参考) 除了链接中的,在实用角度出发: 非托管需要一个个声明引用,就很繁琐 但是托管(虽然麻烦)不用声明,只需要调好配置即可,还是比较方便的 为什么写这个博客,也是因为不同版本vs2017和vs2019有所区别,托管就容易踩坑,希望大家能看看,解决问题(我也很菜,大佬轻喷) 2.非托管类的实现 第一步:创建C++空项目(命名Caculate)添加一个类AddOperate .h代码部分: #pragma once extern "C" _decls
随机推荐
- javascript搜索自动提示功能的实现第1/3页
- Java基于swing实现的弹球游戏代码
- asp.net上传图片并作处理水印与缩略图的实例代码
- JS实现选项卡实例详解
- 全面解析Bootstrap布局组件应用
- php中sprintf与printf函数用法区别解析
- php实现文件下载代码分享
- CURL的学习和应用(附多线程实现)
- C#网络爬虫代码分享 C#简单的爬取工具
- Java 使用poi把数据库中数据导入Excel的解决方法
- java 中继承和多态详细介绍
- 纯js实现的论坛常用的运行代码的效果
- jquery动态切换背景图片的简单实现方法
- JS中取二维数组中最大值的方法汇总
- js仿淘宝商品放大预览功能
- 使用 Spring Boot 实现 WebSocket实时通信
- Android 下载网络图片并显示到本地
- python实现的AES双向对称加密解密与用法分析
- C#实现冒泡排序算法的代码示例
- php阻止页面后退的方法分享