【C#/C++】C#调用C++ DLL bool返回值始终为true的问题排查

server/2025/2/22 16:00:30/

问题描述

在C#项目中,调用C++DLL中方法时,bool返回值始终返回true。

问题原因

C将布尔定义为4字节int,C++将其定义为1字节。C#团队决定在PInvoke期间使用4字节bo0l作为默认值,因为大多数系统API函数Q 使用4字节值作为bool。如果要更改此行为,必须通过封送处理来完成,并指定要使用1字节值。

解决方案

方案一

采用int 返回值替代bo0l返回值,如返回1代表true,返回0代表false。

方案二

通过[return:MarshalAs(UnmanagedType.11)]指定返回值为1字节值。

[DllImport("DLLINTER.dll", EntryPoint="OPENC", CallingConvention=CallingConvention.Cdecl)]  
[return:MarshalAs(UnmanagedType.I1)]  
public static extern bool OPENC([MarshalAs(UnmanagedType.LPStr)] string name);//测试  
public static extern bool OPENC(  string name);     也可以

http://www.ppmy.cn/server/169879.html

相关文章

【deepseek】本地部署+RAG知识库挂载+对话测试

文章目录 前言一、Deepseek模型下载(以7B为例)二、RAG本地知识库挂载三、创建本地对话脚本四、结果展示 前言 本文主要涵盖Deepseek在ubuntu系统中的部署全流程,包括模型的下载、系统部署、本地文档向量化、向量列表存储、RAG知识库挂载、对话测试等内容 一、Deeps…

Linux上Scapy完全指南:从入门到实战攻防

Linux上Scapy完全指南:从入门到实战攻防 目录 Scapy简介与核心优势Linux环境安装与配置Scapy基础操作高级功能与协议分析实战案例:网络诊断与安全审计性能优化与调试技巧常见问题解答 一、Scapy简介与核心优势 1.1 什么是Scapy? Scapy是一…

【排版教程】如何在Word/WPS中优雅的插入参考文献

材料展示 随便选取一段综述内容,以及对应的参考文献,如下图所示: 1 参考文献编辑 首先对参考文献部分进行编辑,将其设置自动编号 在段落中,选择悬挂缩进 在编号中,设置自定义编号,然后按照…

Python爬虫基础文件操作

文件操作 引言 爬虫爬取的一切内容都是在内存进行的,这样会有什么问题吗?如果一旦短电或着发生意外电脑关机了那么你的工作成果将瞬间消失。所以,我们还缺少数据在本地文件系统进行持久化的能力,简单的来说就是文件读写操作。文…

【HBase】HBaseJMX 接口监控信息实现钉钉告警

目录 一、JMX 简介 二、JMX监控信息钉钉告警实现 一、JMX 简介 官网:Apache HBase ™ Reference Guide JMX (Java管理扩展)提供了内置的工具,使您能够监视和管理Java VM。要启用远程系统的监视和管理,需要在启动Java…

RabbitMq 基础

文章目录 一、初识 MQ 1.1 同步调用:1.2 异步调用: 二、RabbitMQ三、SpringAMQP 3.1 依赖和配置文件3.2 消息发送和接收: 3.2.1 消息发送:3.2.2 消息接收: 3.3 WorkQueues 模型:3.4 交换机类型&#xff1a…

AI工作流+专业知识库+系统API的全流程任务自动化

我有点悲观,甚至很沮丧,因为AI留给普通人的机会不多了,这既是人类之间权力的斗争,也是硅基生命和碳基生命的斗争。AI自动化是无法避免的趋势,如果人类不能平权,那就只能跪下接受审判。 通过整合AI工作流、专…

微服务入门-笔记

微服务入门-笔记 介绍 这个mvn工程里边包含了微服务里最基础的服务拆分、基于nacos的服务注册和发现、配置中心以及OpenFeign版的远程调用。 初始化这个工程是来源于阿里云的脚手架,https://start.aliyun.com/,从这上边创建一个包含各种依赖的工程&am…