繁体   English   中英

将struct传递给dll

[英]passing struct to a dll

我想将几个数据传递给Dll函数,所以我想创建一个结构并通过如下结构将它们传递给Dll dunction:

struct options
{
int op1,
int op2,
int op3,
char * op4,
...
char * op10
}

 void dllFunction(options myOptions)

由于dll应该以适用于Windows平台的方式实现,而不管它是什么开发工具,我想知道:

以这种方式发送数据是否有效? 请注意,结构成员都是基本的c类型(int,float,double,...)。

为什么我担心呢? 如你所知,不同的编译器以不同的方式实现了std类,所以你不能通过dll边界传递std类,但是我不确定所有编译器是否以相同的方式放置struct成员或者它们不是,就好像它们不是,那么代码可能无法与某些编译器一起使用。

struct是一个简单的c类型数据类型?

如果我不能为此目的使用结构,那么最好的方法是什么(将大量数据传递给dll函数内的函数?

C ABI定义明确且稳定,因此工作正常。 如果要编译为C ++,要确保获得C ABI,则需要使用extern "C"进行注释。

你唯一遇到麻烦的就是内存指针。 由于无法保证应用程序和DLL使用兼容的运行时库,因此分配内存的代码必须始终是释放它的代码。 例如,你不能让应用程序malloc成为缓冲区,将指向该缓冲区的指针传递给DLL,然后期望DLL free缓冲区。 应用程序需要free缓冲区(因为它是调用malloc的缓冲区),或者应用程序需要导出DLL将调用以释放内存的MyFree函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM