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