C#调用delhpi编写的DLL返回pchar乱码处理_c# pchar-程序员宅基地

技术标签: C#  c#  microsoft  开发语言  

C#调用delhpi编写的DLL返回pchar乱码处理

Delphi的函数声明如下:

function proc_mes(const proc_name, general_info, detail_info: pchar; var msg: pchar): Integer; stdcall;

注意:

PChar是一个指针, 它的大小只有32位. 定义时由Delphi自动填0. 要将PChar作为字符串

使用的话必须自己分配内存用完必须自己释放. PChar型字符串由#0表示字符串结尾

Delphi所提供的相关PChar字符串的操作都是判断#0来决定字符串的结尾的。

C#调用Delphi的DLL的声明如下:

 [DllImport("msp_mes01.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        static extern int proc_mes(string proc_name, string general_info, string detail_info, ref IntPtr msg);

调用方法:

            IntPtr outIntPtr = Marshal.AllocHGlobal(255);
            int s = proc_mes("test", "test", "test", ref outIntPtr);

            string rr = Marshal.PtrToStringAuto(outIntPtr);

测试结果:返回正确

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/linxiao0915/article/details/125178685

智能推荐

[爬虫练习]爬取同程安全应急响应公开漏洞列表以及详情-程序员宅基地

文章浏览阅读267次。附图一张:  今天闲来无事做,就想起同程SRC有一个公开漏洞模块。然而闲的蛋疼的我就有了对其写一个爬虫将漏洞列表爬下来的冲动。有两个版本,一个是单线程的。另一个是多线程的版本。单线程版本:#coding=utf-8import requestsimport reprint "\033[0;31m "print '''●●●█〓█████████▅▄▄..._同程安全响应漏洞公开列表

Java数据类型和MySql数据类型对应一览 -程序员宅基地

文章浏览阅读129次。类型名称显示长度数据库类型JAVA类型JDBC类型索引(int)描述 VARCHARL+NVARCHARjava.lang.String12 CHARNCHARjava.lang.String1 BLOBL+NBLOBjava.lang.byte[]-4..._mysql数据类型和java对应

SpringBoot 2.x ShardingSphere分库分表实战-程序员宅基地

文章浏览阅读2.4k次。本文转载自微信公众号:李浩东的博客一. 项目需求在之前我做项目的时候,数据量比较大,单表千万级别的,需要分库分表,于是在网上搜索这方面的开源框架,最常见的就是mycat,..._李浩东博客

2023推免记录_东南计算机 夏令营 补录-程序员宅基地

文章浏览阅读980次,点赞5次,收藏2次。2023末流211SE边缘人保研记录_东南计算机 夏令营 补录

你真的了解Python吗?这篇文章可以让你了解90%_python 真的行么-程序员宅基地

文章浏览阅读208次。人们为什么使用Python?之所以选择Python的主要因素有以下几个方面: 软件质量:在很大程度上,Python更注重可读性、一致性和软件质量,从而与脚本语言世界中的其他工具区别开发。此外,Python支持软件开发的高级重用机制。例如面向对象程序设计。 提高开发者的效率:相对于C、c++、Java等编译/静态类型语言,Python的开发者效率提高了数倍。Python代码量往往..._python 真的行么

Word打开文件时,提示文件扩展名和文件格式不匹配,无法打开_word无法打开文件,因为文件格式与文件扩展名-程序员宅基地

文章浏览阅读1.7w次。Word打开文件时,提示文件扩展名和文件格式不匹配,无法打开_word无法打开文件,因为文件格式与文件扩展名

随便推点

RabbitMQ消息队列-程序员宅基地

文章浏览阅读46次。1、MQ是什么 ---------异步机制 2、一些常用MQ:RabbitMQ、kafka、RocketMQ、ActiveMQ 3、RabbitMQ的优点(重点): a)异步消息队列,缓解服务器的压力; b)处理高并发,基于开发语言Erlang设计; c)队列、消息的持久化; ..._java rabbitadmin declarequeue

项目管理相关_项目是独立完成还是团队完成-程序员宅基地

文章浏览阅读583次。项目管理_项目是独立完成还是团队完成

oracle19c数据库新建表空间及用户_oracle19c创建表空间和用户-程序员宅基地

文章浏览阅读1.7k次。使用navicat视图或者sql方式新建表空间及用户会出现报错情况。总结报错原因及解决方式:方法一: 视图新建表空间及用户新建表空间:1.其他->表空间->新建表空间2.填写数据文件名称、大小、单位、自动扩展方式、下一个大小3.点击保存填写表空间名称后查看表空间4.查看表空间是否创建成功SELECT Total.name "Tablespace Name",Free_space, (total_space-Free_space) Used_space,_oracle19c创建表空间和用户

Study:基于Selenium进行Android客户端自动化测试的例子。-程序员宅基地

文章浏览阅读154次。注意:此处省略ADB和Node.js的配置。 代码示例:package com.hisky.seleniumTest;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java..._f使用 selenium 进行android客户端自动化测试

c/c++整理--函数重载_式题33判断题函数重载的正确声明考点:函数重载的正确声明出现频率:★★★★(a-程序员宅基地

文章浏览阅读426次。一、为什么C语言不支持函数重载而c++能支持什么是函数重载?为什么C语言不支持函数重载,而c++能支持函数重载?解析:  函数重载是用来描述同名函数具有相同或者相似的功能,但数据类型或者是参数不同的函数管理操作。在C语言里需要写两个不同名称的函数来进行区分。int add1(int a, int b){ return a+b;}float add2(float a, f_式题33判断题函数重载的正确声明考点:函数重载的正确声明出现频率:★★★★(a

mysql怎么求四分位数_在SQL中计算2,3个四分位数的平均值-程序员宅基地

文章浏览阅读1.8k次。如果在错误的四分位数中,您可以使用IF将它们设置为零来创建四分位数值:我们假设,原始数据表是由DROP TABLE IF EXISTS `rawdata`;CREATE TABLE `rawdata` (`id` int(11) NOT NULL AUTO_INCREMENT,`url` varchar(250) NOT NULL DEFAULT '',`time` int(11) NOT NUL..._mysql 分位数sql