社区
C++ Builder
帖子详情
DLL接口里返回CHAR*的问题
LWLIFE
2012-09-17 09:09:09
需要给别人提供一个DLL,返回的类型是CHAR*,尝试过以下几种方法
1定义一个返回变量char cres[1024]返回cres即可,但是这样一量返回的长度超过1024就会切断
2使用AnsiString(UnicodeString)变量sRes,返回c_str(t.str)也可以,但是这样的方法,接收的人经常后面就会少几位,请问怎么解决好呢?此种方法怎么样才能让后面不少?
...全文
433
10
打赏
收藏
DLL接口里返回CHAR*的问题
需要给别人提供一个DLL,返回的类型是CHAR*,尝试过以下几种方法 1定义一个返回变量char cres[1024]返回cres即可,但是这样一量返回的长度超过1024就会切断 2使用AnsiString(UnicodeString)变量sRes,返回c_str(t.str)也可以,但是这样的方法,接收的人经常后面就会少几位,请问怎么解决好呢?此种方法怎么样才能让后面不少?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LWLIFE
2012-09-17
打赏
举报
回复
O,这样呀,谢谢回复
勉励前行
2012-09-17
打赏
举报
回复
1、Dll中定义一个全局变量 AnsiString PublicBuff, 返回PublicBuff.c_str()即可.
如果不是全局变量,接收的人少几个字节很正常。但因为是全局变量,也就不支持多线程了。
2、支持多线程的话,需要规范,即规范好谁分配内存,谁释放。可以在DLL中放一个接口,deletePCHARinDLL(char *),由调用者负责delete,即谁调用,谁调用deletePCHARinDLL来清场。
3、另一种规范是,DLL标明用户必须自行保障有足够的空间。使用者可以先调用DLL中的函数,取得字串长度,再由使用者申请内存。
你说的情况,只能是第1种,DLL中用全局变量或局部静态变量来实现。
LWLIFE
2012-09-17
打赏
举报
回复
呵呵,现在发现这样的问题也挺不爽,没办法呀,呵呵。
缘中人
2012-09-17
打赏
举报
回复
char* 就得用c_str();
或者在你的函数里这样改下试试
char buf[2048];
return buf
返回char*真麻烦
LWLIFE
2012-09-17
打赏
举报
回复
这种方式,不分配空间了
这里不的分配空间了什么意思?现在C#就是s=fun();后,我返回的是123,结果s变成了12少了后面的。
另外 使用c_str(),t_str()这样的方法有没有什么解决办法的,感觉这样灵活一些
缘中人
2012-09-17
打赏
举报
回复
调用这c#也无妨,就用
String s;
s = fun();
这种方式,不分配空间了,要分配就分配大一些例如[10000]
LWLIFE
2012-09-17
打赏
举报
回复
调用的是C#,并且在我问题1里也说了,如果定义一个1024,一旦返回值超过1024那一样数据会有丢失了。
缘中人
2012-09-17
打赏
举报
回复
调用这如果是c++builder;
String s;
s = fun();
或者
char buf[1024]={0};
strcpy(buf,fun());
把这个返回值复制出来。就安全了。否则下次访问值可能变化。
LWLIFE
2012-09-17
打赏
举报
回复
呵呵,谢谢回复,思路不错,以后会采用。
我这个接口以经提供使用好久了,最近发现这样的问题,类型不能改了,有什么办法解决吗?
缘中人
2012-09-17
打赏
举报
回复
我一般不返回char*
函数返回值为int类型。
int fun( ..... ,char * cres)
让调用这分配空间,用完后调用者释放空间。
易语言开发通达信DLL公式
接口
目前市面上的股票软件的扩展
接口
基本上都是C/C++,python语言等开发的,英文代码确实难倒了一些国人。而易语言就是根据国人的习惯开发的编程语言,易学,易懂,易用被很多人所接受。很多的易语言爱好者很想用易语言来开发股票软件的扩展公式,而苦于股软件并没有提供易语言的开发
接口
。本系列课程将从数据结构,底层原理讲起,一步步分析并用易语言来编写通达信
DLL
公式
接口
接口
,以及用编写的
接口
来编写各种公式。 学会了用易语言做通达信DLL
接口
的方法,其它的股票软件也可以按些方法做出来。
C# 调用C/C++
Dll
(参数含
char
*指针,
返回
char
*指针)
动态库: //MyPoint
Dll
.h extern"C" _declspec(
dll
export)
char
* strcpyTest(
char
* dest,
char
* sour);
c#引用c语言
dll
char
,c#调用c++的
DLL
返回
char
*类型接受的方法 - csharp - 万捷博客-今天在用C#开发软件,调用的C++写的
DLL
,
DLL
接口
返回
的数据是
char
*类型,...
今天在用C#开发软件,调用的C++写的
DLL
,
DLL
接口
返回
的数据是
char
*类型,导致C#程序不断的崩溃,最终找到了解决办法。声明
DLL
接口
调用这
里
涉及到以下几点:设置
DLL
调用的编码,C#默认是Unicode的,C++默认是ANSI的,所以需要增加:
Char
Set =
Char
Set.Ansi增加调用约定,否则会报错误:CallingConvention = CallingConvention...
C# 调用 Qt
Dll
返回
int 和const
char
*
写了两个函数
接口
, 一个
返回
int, 另一个
返回
const
char
*字符串
dll
方法
返回
const
char
* 时, c# 程序使用IntPtr类型声明, 不然会乱码 Qt
dll
接口
函数定义: main.cpp extern "C" __declspec(
dll
export) int add(int numberA, int numberB) { return num...
C#调用C++
dll
,C++中
char
*与C#类型的对应关系
最近在编写C#上位机应用程序,需要调用C++的
dll
,期间遇到
dll
接口
库中
char
*类型纠结了很久,试过string,StringBuilder,StringBuilder结果都以失败告终,通过查找博客等资料最后找到了救命稻草---IntPtr。例子如下: C++
dll
接口
函数: void JT_ReaderVersion(int icomID,
char
* szReaderVersion,i
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章