首页 文章

如果每个静态lib定义导出的功能(vc 2008),如何将多个静态链接库合并到一个dll中?

提问于
浏览
2

如果每个静态lib定义导出的功能(vc 2008),如何将多个静态链接库合并到一个dll中?

在单个dll项目中存在的多项目布局和静态链接的多个子项目(在dll项目中) . 尽管标记为__declspec(导出),但子项目(.lib)中的某些符号拒绝将其符号导出到最终的dll中 .

生成.def文件并明确标记符号以进行导出可以解决此问题 . 但是,确定哪些符号标记为__declspec(导出)可以证明问题 . 由于大量的导出类/函数和主要名称修改手工维护列表是一个不可靠的过程,因此生成标记为导出的符号列表将是唯一可行的选项 .

是否有实用程序或编译器指令可以执行此操作?

2 回答

  • 2

    使用DEF文件 .

    始终使用DEF文件 .

    永远不会使用DEF文件 .

    只需接受DEF文件即可使用 .

    停止使用__declspec(dllexport),并使用dang-dratted def文件 .

    也不要导出类 . 导出仅需要导出的类成员 . 并使用DEF文件来执行此操作 .

    说真的,如果导出没有DEF文件的类,函数名将比实际程序数据长几倍 . 您应该使用序数来导出C成员函数 .

  • 3

    经过反复试验,我发现使用lib / def命令可以生成导入库和导出文件 . 导出文件似乎包含所有用__declspec(dllexport)标记的符号 . 随后可以使用dumpbin检查.exp文件,并将其用作生成模块定义文件的引用 .

相关问题