我希望编译一个使用共享库的项目,但我无权访问原始库文件。不过,我有原始界面...
我基本上想要的就是让编译器进行符号名称修改等,这样我就不必手动调用 GetProcAddress...
然而,当我不链接共享库时,Visual Studio 会抱怨未定义的引用(废话)...使用 GNU LD,我可以使用“allow-shlib-undefined”,但不幸的是我必须使用 MSVC++...有类似的吗
编辑:
当然,我可以制作一个假(代理)dll,为我的界面中找到的所有方法创建存根,链接到它,然后加载原始 dll。我不知道这是否是最好的解决方案......
编辑2:
看起来我可以导出符号并生成一个 lib 文件: http://www.coderetard.com/2009/01/21/generate-a-lib-from-a-dll-with-visual-studio/
我会先尝试一下并报告。
尝试调查“Edll for Windows”(home)实施:
EnhancedDLL——拥有带有未定义符号的插件和库
它发现了 4 个克服 DLL 限制的解决方案:“通常的解决方案”、“子 DLL 解决方案”、“.def &.a 解决方案” 和 “edll 解决方案”。