2010-11-29 117 views
0

这是我的场景:什么是将数据传输到DLL的好方法?

我已经在C++(使用VS2008)中提供了一个规则的DLL,它提供了C接口来导出函数。的有关职能有两个是1.初始化()和2未初始化()

初始化()我不得不采取从客户端应用程序的一些参数。到目前为止,我认为以下两种方式来做到这一点的:

第一种方式:

我做一个结构,填充和结构对象的对象/指针传递从客户端应用程序的DLL。

struct SData 
    { 
     DataType param1; 
     DataType param2; 
     DataType param3; 
     DataType param4; 
    }; 

方式二:

我出口4层的功能从我的DLL像

SetParam1(DataType param1) 
    SetParam2(DataType param2) 
    SetParam3(DataType param3) 
    SetParam4(DataType param4) 

哪种方式或其他一些我应该使用,请建议。

回答

2

由于DLL共享与应用程序的地址空间,你可以通过发送指向你的结构处理这一切。如果您碰巧在您的应用程序中使用了不同版本的DLL,那么您可能还会在您的函数中使用某种版本检查,以避免因不同版本的混淆。

我个人不建议SetParam(param1)方法,因为它在DLL意味着全球范围内因而不是线程安全的。另一方面,将所有参数传递给函数本身具有局部范围,不易出错,更容易理解。

例如,在使用SetParam方法的实际功能之前,您不知道需要调用多少个函数。但是,在函数中传递参数允许您通过查看函数声明或结构成员来评估是否提供足够的参数。在需要调用各个方法来设置参数的情况下,您必须有文档。

同样,你可以把每一个结构成员在你的函数单独的​​参数,但太多的参数变得难以在一个函数调用保持一定的数量之后。在这种情况下使用指向结构的指针会更好。

想想自己是谁的人从公司购买的DLL。你会如何选择DLL?哪种方式更容易,更直接地编写代码?

+0

有没有第三条道路? – 2010-11-29 09:49:30

相关问题