动态库的动态加载方式调用,里面定义的数据结构理论上只作为dll内部使用!在这种情况下,如果这个dll的导出函数参数有内部定义的数据类型,显然是违反低耦合性原则的,实际上这种情况下编写dll方应该提供.h、.lib和.dll文件给使用者的,即你不能以动态库的动态加载方式调用,而是以动态库的静态加载方式调用!
换句话说,一般的只提供dll和导出函数文档这种情况,其dll中的导出函数参数列表都应该是基础数据类型,而不应带有内部的自定义结构,当然,带内部定义数据机构参数的函数,也应该是内部函数,不做导出用。
要想使用dll里定义的数据结构,必须要有头文件的,或者你自己定义一个同名的数据结构,但是这种情况下你得知道那个数据结构的组成
总之,对于dll的编写者和使用者,双方必须要有明确的需求,以何种方式使用,决定着dll的编写规则,也决定着使用规则.....
换句话说,一般的只提供dll和导出函数文档这种情况,其dll中的导出函数参数列表都应该是基础数据类型,而不应带有内部的自定义结构,当然,带内部定义数据机构参数的函数,也应该是内部函数,不做导出用。
要想使用dll里定义的数据结构,必须要有头文件的,或者你自己定义一个同名的数据结构,但是这种情况下你得知道那个数据结构的组成
总之,对于dll的编写者和使用者,双方必须要有明确的需求,以何种方式使用,决定着dll的编写规则,也决定着使用规则.....