首页 > 编程语言 >C++调用C#DLL并调试

C++调用C#DLL并调试

时间:2022-10-21 11:45:14浏览次数:54  
标签:C# namespace System C++ DLL using hhh

使用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#,namespace,System,C++,DLL,using,hhh
From: https://www.cnblogs.com/zytlk/p/16812928.html

相关文章

  • 全网最牛k8s(Kubernetes)+docker+DevOps+linux+微服务容器
     云原生Java架构实战K8s+Docker+KubeSphere+DevOps(中)KubeSphere平台安装简介Kubernetes上安装KubeSphere安装步骤选择4核8G(master)、8核16G(node1)、8核16G(nod......
  • Mac下安装SQLmap的安装
    1、cd/usr/bin/2、sudogitclone ​​https://github.com/sqlmapproject/sqlmap.git​​ sqlmap-dev3、重新打开terminal输入此信息后,回车即可。aliassqlmap=‘​......
  • sysbench--OLTP数据库性能测试与服务器基准功能测试工具
     sysbench是一个基于LuaJIT的可编写脚本的多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂的工作负载。 sysbench的作用:sys......
  • Centos7 安装docker
    1、安装命令如下:$curl-fsSLhttps://get.docker.com|bash-sdockermirrorAliyun 2、设置仓库$sudoyuminstall-yyum-utils\device-mapper-persistent-data\lvm2......
  • FreeSwitch报错AUDIO RTP REPORTS ERROR: [Bind Error!
    之前弄了,注册用户在公网映射通过,但电话网关一般在同一内网,没多注意。今日有个项目,特殊云,电话用户和网关均在同一侧,不在freeswitch服务端端于是报了个错,电话无法外呼出去......
  • Elasticsearch-----介绍与增删改查操作
    一、介绍:1、概念:是功能非常强大的全文搜索引擎,目的是为了能快速的查询数据2、核心概念:接近实时(NRT):Elasticsearch是一个接近实时的搜索平台。从索引一个文档直到这个文档能......
  • imagemagick: 多图创建gif动图(ImageMagick 6.9.10-86)
    一,命令行例子:1,生成gif[lhdop@bloggif1]$convert-delay200a1.webpa2.webpa3.webpa4.webp-loop0a.gif-delay数字单位是10毫秒,图片切换的时间是该数字乘......
  • Codeforces1695 D1.+D2 Tree Queries
    题意给一个n个点的无向图,其中有一个隐藏点X,可以进行一组询问S来确定S是n个节点中的哪个点。S包括k个询问节点。询问返回的值也为k个值,每个值为X点到每个询问节点的最短路......
  • Jmeter----请求的reponse结果中的某个参数作为JDBC Request的查询条件
    一、前言数据库连接成功二、需求将登录账号12608523691,接口的reponse的参数uuid作为JDBCRequest的查询条件   二、添加后置处理器并进行相关的设置。......
  • linux_centos7----开启/关闭防火墙
    1、看centos7的防火墙的状态,查看的命令为sudosystemctlstatusfirewalld查看后,看到active(running)就意味着防火墙打开了。     2、如果想关闭防火墙,命令为:sud......