我的大部分代码都依赖于 .lib 格式的专有 Windows 库(静态库)。让我们称之为 prop.lib。
库的工作方式使我创建了一个链接到 prop.lib 的新共享库。 然后我可以通过 prop.exe(另一个加载我的共享库并运行我的代码的程序)运行我的代码。
我想创建一个独立运行的可执行文件,但由于 prop.lib 包含一个 main 函数,我收到一个链接器错误。
是否可以通过某种方式从库中删除主函数或创建另一个入口点?
我使用 Visual Studio 2005。
编辑:到目前为止,我还没有 prop.lib 的源代码。
最佳答案
你应该意识到这是相当低级的任务。
解决方法:如果您有权为可执行文件构建配置,您可以在可执行文件构建中指定链接器选项/ENTRY。
微软的 editbin不允许执行此类修改。所以似乎没有官方方法可以从微软“破解”你的 *.obj 文件
尝试使用lib /list staticlib.lib 查看静态库中的目标文件。如果你很幸运,并且你在单独的目标文件中有 main.obj,那么只需/remove那个目标文件
如果 3 没有帮助,请尝试自己编写应用程序来编辑 COFF 文件中的符号。 https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx
从目标文件开始传递 +8 个字节,读取 4 个字节。它将偏移到具有“带名称的 18 字节结构。(如果所有名称都是 8 字节长)”的表。用零填充剩余的“名称”字节来编辑所需的名称。我从不尝试使用 COFF。我在网上找不到类似 COFF 编辑器的东西。
关于c++ - 从静态库中删除主函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29169403/