小编wot*_*n07的帖子

如何使用__declspec(dllexport/import)从DLL /导出/导入C结构到控制台应用程序

这是我第一次处理DLL.在MSDN文档之后,我创建了一个头文件fooExports.h,其中宏根据预处理器定义定义:

#ifdef FOODLL_EXPORTS
    #define FOO_API __declspec( dllexport )
#else
    #define FOO_API __declspec( dllimport )
Run Code Online (Sandbox Code Playgroud)

我的目的是在我的DLL实现以及控制台应用程序中使用此标头.到目前为止,导入和导出功能工作正常.当我尝试导出一个已经定义的结构作为其中一个导出函数的参数时,问题就出现了.例如,在前面提到的头文件中,我声明FOO_API void foo( FooParams *args )并且args是一个如下定义的结构:

typedef struct FooParams
{
    char *a;
    char *b;
    void *whatever; //some other type
} FooParams;
Run Code Online (Sandbox Code Playgroud)

此结构必须在foo.h中定义,而不是在fooExports.h定义.是否有任何方法可以导出此结构而不将其从原始头文件中删除(考虑到我希望将导出/导入集中在fooExports.h中).这样做会有什么更好的方法?DLL都是C以及使用它的客户端应用程序.

c dll struct dllimport dllexport

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

dll ×1

dllexport ×1

dllimport ×1

struct ×1