C++调用C#生成的DLL文件的各种问题

C++调用C#生成的DLL文件:

  首先选择建立一个C#的类库,然后再按照需求编写需要的函数

  之后,对于C++调用过程需要注意的几点:

  1.使用#using <....some.dll>指出DLL文件的位置来调用DLL

  2.using namespace some 方便之后调用函数

  3.Class1 ^c = gcnew Class1();

    gcnew和new的区别(引自百度知道):

    gcnew返回的是一个句柄(Handle),而new返回的是实际的内存地址.

    gcnew创建的对象由虚拟机托管,而new创建的对象必须自己来管理和释放.

  4.编译之后报错:对于C++/CLI错误,见下图的“公共语言运行时支持”

   

    可能报的另外一个错:clr和MD不兼容,参见下图的 “运行库”

    

  5.最后一个错误:

fatal error C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]  可以这样处理:(MFC的使用 注意这个项目)  

基本上就这么几个问题。因为今天折腾了5 6 个小时,故做点记录。

C++调用C#生成的DLL文件的各种问题,布布扣,bubuko.com

时间: 2024-10-08 20:27:12

C++调用C#生成的DLL文件的各种问题的相关文章

在VS2010上使用C#调用非托管C++生成的DLL文件

背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用.本篇文章将引导你快速理解这个调用的过程. 步骤 1. 创建一个CSharpInvokeCPP的解决方案: 2. 创建一个C++的动态库项目: 3. 在应用程序设置中,选择“DLL”,其他按照默认选项: 最后点击完成,得到如图所示项目: 我们可以看到这里有一些文件,其中dllmain.cpp作为定义DLL应用程序的入口点,它的作用跟

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)

背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用.本篇文章将引导你快速理解这个调用的过程. 步骤 1. 创建一个CSharpInvokeCPP的解决方案: 2. 创建一个C++的动态库项目: 3. 在应用程序设置中,选择“DLL”,其他按照默认选项: 最后点击完成,得到如图所示项目: 我们可以看到这里有一些文件,其中dllmain.cpp作为定义DLL应用程序的入口点,它的作用跟

在VS2017上使用C#调用非托管C++生成的DLL文件(图文讲解)

原文:在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解) 背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用.本篇文章将引导你快速理解这个调用的过程. 步骤 1. 创建一个CSharpInvokeCPP的解决方案: 2. 创建一个C++的动态库项目 CSharpInvokeCPP.CPPDemo: 3. 在Windows桌面项目中,选择“动态链接库DLL”,其他按

Qt Creator调用VS2008生成的DLL注意事项 good

问题:生成的dll文件QT无法静态/隐式调用 分析:调用的lib库可能是msvc编译的,而我用Qt调用,Qt默认编译器是minGW,两种编译器生成的函数名不一样,所以调用的时候你要用哪个函数,编译结果肯定显示这个函数未定义! 解决1:用VS2008生成DLL文件时,采用__declspec方式导出函数,不要使用def模块文件,这时dll中的函数名称[email protected]规则命名 解决2:函数的调用约定改为__cdecl 导出函数的调用约定和使用这个函数时声明的调用约定必须一致,否则程

Java採用JNI调用VC++生成的dll(Java与C++交互)

应项目需求,须要android调用java,java再调用C++实现android一个图片匹配的功能,我们作为java组须要和C++和Android进行交互.以下是java和C++採用JNI的方式进行接口传參交互,我做的一个demo并执行成功. 什么是JNI? JNI全拼是Java Native Interface,中文意思为Java本地调用.JNI标准是Java平台的一部分.它同意java和其它语言的代码进行交互.JNI開始是为了本地已经编译好的语言,尤其是C和C++而设计的.我们也能够使用J

Java采用JNI调用VC++生成的dll(Java与C++交互)

应项目需求,需要android调用java,java再调用C++实现android一个图片匹配的功能,我们作为java组需要和C++和Android进行交互.下面是java和C++采用JNI的方式进行接口传参交互,我做的一个demo并运行成功. 什么是JNI? JNI全拼是Java Native Interface,中文意思为Java本地调用.JNI标准是Java平台的一部分,它允许java和其他语言的代码进行交互.JNI开始是为了本地已经编译好的语言,尤其是C和C++而设计的,我们也可以使用J

通过COM组件方式实现java调用C#写的DLL文件

通过Java调用C#的DLL文件实现.网上资料很多,自己整合总结了一下,做个备忘. 一.C#写com组件 开发环境 VS2013 1.新建工程:TestDemo(类库项目)     //根据自己需要取工程名 注:WIN7以上系统VS必须以管理员身份启动!!!!! 2.右键点击工程->应用程序->程序集信息->使程序集com可见,打上勾(或者:项目->TestDemo属性->应用程序->程序集信息->使程序集com可见,打上勾) 注:1.创建工程的时候,NET Fr

修改VS2010生成的dll文件中的内容

我的电脑是64为的操作系统,所以先找到下面的路径 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin 找到这个文件:ildasm.exe,如下图: 然后双击,[文件]→[打开]见到如下图: 这里我就用WxPayAPI作为例子,然后[打开],如下图: 这里面都是这个dll中的类,然后选择[文件]→[转储],会的到一个两个文件,我名字修改成了test,所以这里会得到两个文件test.il.test.res如下图: ,我们需要将这test.i

【C#学习笔记】调用C++生成的DLL

首先用vs2010建立win32项目,选择dll和空项目. 头文件add.h extern "C" __declspec(dllexport) int add(int a,int b); 源文件add.cpp #include "add.h" int add(int a,int b) { return a+b; } 编译生成add.dll. C#调用: using System; using System.Runtime.InteropServices; names