使用C++ 来调用C#DLL 并且调试程序

环境:使用VS studio 2019

C#项目的设置

1、C# -> 属性 -> 应用程序 -> 目标框架 ->.NET Framework 4

2、C# -> 属性 -> 调试 -> 调试程序引擎 -> 勾上 启用本地代码调试

3、C# -> 属性 -> 生成 -> 输出 -> 勾上 为COM互操作注册

C++项目的设置

1、首先创建一个C++的控制台程序,下面我们将在C++项目中修改

2、使用#using 来添加DLL 示例:#using "hhhh.dll"

3、项目->属性-> C/C++ -> 命令行 ->其他选项 添加:/Zc:twoPhase-

4、项目->属性->配置属性->高级->C++/CLI属性 -> 公共语言运行时支持 选择 公共语言运行时支持(/clr)

5、C/C++ -> 常规 -> 调试信息格式 -> 选择 程序数据库(/Zi)

注意

1、^这个符号是使得托管和非托管代码混合开发更加方便

下面是一个小的demo

// MyDLLResult.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include <iostream>
#using "hhhh.dll" using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;
using namespace hhh;
using namespace std;
int main()
{
hhh::hhh^ api = gcnew hhh::hhh();
char strhhh[]{ "123456789" };
String^ hhhh = System::Runtime::InteropServices::Marshal::PtrToStringAnsi((IntPtr)strhhh);
char strOhhh[]{ "hhhhh" };
String^ hhhhh = System::Runtime::InteropServices::Marshal::PtrToStringAnsi((IntPtr)strOhhh);
String^ Restlt = api->ORBIC_TAB_CUSTOMIZATION_INFO_GET(hhhh , hhhhh ); char* outStr = (char*)Marshal::StringToHGlobalAnsi(Restlt).ToPointer();
cout << "outStr:"<<outStr <<endl;
cout << "Hello World!\n";
} ``

C++调用C#DLL并调试的更多相关文章

  1. 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试

    from:http://m.blog.csdn.net/article/details?id=51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解 ...

  2. 在VS2015中用C++创建DLL并用C++调用且同一时候实现对DLL的调试

    一:用C++创建DLL            依照[在VS2015中用C++编写可被其他语言调用的动态库DLL]提示创建C++编写的DLL.或參考[在VS2015中用C++创建DLL并用C#调用且同一 ...

  3. 用C#调用C++DLL(x64),总是提示找不到DLL

    用C#调用自己写的C++ DLL(x64),总是提示找不到DLL,调试可以,发布release老是提示找不到DLL(dll文件确定存在) 原因:Visual C++的DLL分发方式没选:调试默认选择: ...

  4. C#调用C++ Dll

    现在项目基本都是旁边C++的哥们做好dll扔给我,然后我调用.好久之前晚上down了一份c#调用c++dll的方法,出处早已经遗忘.闲来无事,放上来好了.原作者看到后可以留言,我会把您链接放上的,帮了 ...

  5. 【JNI】OPUS压缩与解压的JNI调用(.DLL版本)

    OPUS压缩与解压的JNI调用(.DLL版本) 一.写在开头: 理论上讲,这是我在博客园的第一篇原创的博客,之前也一直想找个地方写点东西,把最近做的一些东西归纳总结下,但是一般工程做完了一高兴就把东西 ...

  6. C#中调用unmanaged DLL

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. c#调用c++ dll(二)

    当对c++几种调用方式有了解以后我们可以试着写个c++动态连接库了,我们现在来写个简单的c++求和函数并把它封装成dll,供以后的c#调用 我们写dll的时候,个人认为,要写就要把dll写好,写标准, ...

  8. Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)

    文章目录:                   1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Ap ...

  9.  VS2012 C#调用C++ dll

    VS2012 C#调用C++ dll 调试方法:[dll工程和调用dll的exe工程在同一个解决方案中]dll工程,属性-配置属性-调试-把 命令 为 调用该dll的exe工程的bin\Debug\* ...

  10. 利用OllyDebug查看程序调用的dll模块

    最近在做一个Qt项目,在产品发布的时候一直为找不到程序到底缺少了哪些dll组件而困扰.具体问题是,在我的项目中使用到了QMediaPlayer播放一段音频文件,我使用的开发环境的Win7 32位,而在 ...

随机推荐

  1. Windowsのcmd命令

    Windowsのcmd命令 网络操作: ipconfig命令: ipconfig -all 查看网络信息 ipconfig -release 释放ip/tcp ipconfig -renew 重新获取 ...

  2. Python实现k-近邻算法案例学习

    一.介绍 你好,我是悦创. 博客首发:https://bornforthis.cn/column/Machine-learning/informal-essay/01.html 本文是由给私教学员 c ...

  3. org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive

    昨天23点给一个老项目改完打包发布到云服务器后报错,Tomcat9 启动不了,白折腾了我几个小时. 这错误以前遇到过,由于太过久远已经忘记,特此记录 错误日志 22-Dec-2021 23:52:18 ...

  4. Redis 数据结构-双向链表

    Redis 数据结构-双向链表 最是人间留不住,朱颜辞镜花辞树. 1.简介 Redis 之所以快主要得益于它的数据结构.操作内存数据库.单线程和多路 I/O 复用模型,进一步窥探下它常见的五种基本数据 ...

  5. Web初级——JavaScript

    JavaScript JavaScript是一种基于对象的脚本语言,用于开发基于客户端和基于服务器的Internet应用程序 1.了解JS 1.1JavaScript的组成 JavaScript 的核 ...

  6. [C++Primer] 第二章 变量和基本类型

    第二章 变量和基本类型 引用 引用定义的时候必须初始化. 引用初始化之后无法重新绑定到其它对象上. 引用本身并不是对象,所以没有指向引用的引用(不管如何多层引用,引用的还是源对象) 下面用一个简单的例 ...

  7. Linux c 检测U盘挂载路径方法

    思路: 1.使用df -h |grep mnt shell 命令查找到挂载路径信息 本代码是将结果存入文件中,再从文件中解析出路径信息.也可使用fopen直接从管道中读取信息 2.解析出信息最后的/m ...

  8. ua5.4源码剖析:三. C++与Lua相互调用

    概述 从本质上来看,其实说是不存在所谓的C++与lua的相互调用.lua是运行在C上的,简单来说lua的代码会被编译成字节码在被C语言的语法运行.在C++调用lua时,其实是解释运行lua文件编译出来 ...

  9. Java 进阶P-1.3+P-1.4

    成员变量和成员函数 成员变量 类定义了对象中所具有的变量,这些变量称作成员变量 每个对象都有自己的变量,和同一个类的其他对象是分开的 成员方法 在 Java 语言中使用成员方法对应于类对象的行为.以 ...

  10. vue3 | slots

    一.什么是插槽 插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot>  表示,父组件可以在这个占位符中填充任何模板代码,如 HTML.组件等,填充的内容 ...