dll函数返回字符串问题。
我是一个初学者,想问如下问题:
1、下面代码中有什么问题:为何我在pb中调用只能调用一次。
static char* g_Fonts= new char[200];
int CALLBACK EnumFontsProc(
CONST LOGFONT *lplf, // logical-font data
CONST TEXTMETRIC *lptm, // physical-font data
DWORD dwType, // font type
LPARAM lpData// application-defined data
)
{
strcat(g_Fonts,(char*)lplf->lfFaceName);
strcat(g_Fonts,(char*)",");
return 1;
}
extern "C" _declspec ( dllexport )
char* pascal getfonts()
{
strcpy(g_Fonts,"");
EnumFontFamilies(GetDC(NULL),NULL,(FONTENUMPROC)EnumFontsProc,0);
return g_Fonts;
}
2、dll函数参数中可以引用数组吗?如何做:
1、下面代码中有什么问题:为何我在pb中调用只能调用一次。
static char* g_Fonts= new char[200];
int CALLBACK EnumFontsProc(
CONST LOGFONT *lplf, // logical-font data
CONST TEXTMETRIC *lptm, // physical-font data
DWORD dwType, // font type
LPARAM lpData// application-defined data
)
{
strcat(g_Fonts,(char*)lplf->lfFaceName);
strcat(g_Fonts,(char*)",");
return 1;
}
extern "C" _declspec ( dllexport )
char* pascal getfonts()
{
strcpy(g_Fonts,"");
EnumFontFamilies(GetDC(NULL),NULL,(FONTENUMPROC)EnumFontsProc,0);
return g_Fonts;
}
2、dll函数参数中可以引用数组吗?如何做:
...全文
相关推荐
调用动态链接库 5 - 作为函数返回值的字符串为什么不用在 VI 中先分配内存-综合文档
**灵活性**:允许DLL函数处理字符串内存可以更好地适应未来的变化。如果DLL的实现有所更新,返回的字符串长度发生变化,预先分配的内存可能会成为问题。
易语言DLL返回文本型数组实战源码项目
为了让DLL返回的数据能够被易语言正确解析,必须构造一个与易语言文本型数组内存布局相兼容的数据结构。由于易语言无法直接识别复杂的C++类对象,推荐使用纯C风格的结构体(POD, Plain Old Data)来保证二进制兼容性。设计思路如下:定义一个包含字符串指针数组和元素数量的结构体,所有字符串内容集中存放在一块连续的内存区域中,便于整体释放。// 指向字符串指针数组的首地址int count;// 字符串元素个数// 所有字符串总长度(含'\0')
C#调用C++编写的DLL函数各种参数传递问题
本文主要探讨了C#如何调用C++编写的DLL函数,并详细介绍了在不同情况下,如无返回值、返回字符串、返回其他类型以及传递结构体指针等参数传递的问题。C#调用C++编写的DLL函数是跨语言编程中常
c# 调用C++编写 的DLL函数各种参数传递问题。
这篇文章将详细介绍 C# 调用 C++ 编写的 DLL 函数各种参数传递问题,包括不返回值的参数、带返回值的参数、传递结构体指针和传递结构体数组等。1.
delphi 调用vc dll 获取返回数据 mac地址
总结,Delphi调用VC++ DLL获取返回数据,尤其是字符串,需要注意数据类型匹配、内存管理和字符串处理。正确地使用`strcpy`和内存管理函数可以解决这类问题,避免数据丢失或内存泄漏。


进程/线程/DLL
