繁体   English   中英

从静态库中删除main函数

[英]Remove main function from static library

我的大部分代码都依赖于.lib格式的专有Windows库(静态库)。 让我们称之为prop.lib。

该库的工作原理是我创建了一个链接到prop.lib的新共享库。 然后我可以通过prop.exe(另一个加载我的共享库并运行我的代码的程序)运行我的代码。

我想创建一个可以自己运行的可执行文件,但由于prop.lib包含一个main函数,我得到一个链接器错误。

是否有可能从lib中删除main函数或创建另一个入口点?

我使用Visual Studio 2005。

编辑:截至目前我没有prop.lib的源代码。

你应该意识到这是一个相当低级别的任务。

  1. 解决方法:如果您有可能构建可执行文件的配置,则可以在可执行版本中指定链接器选项/ ENTRY。

  2. Microsoft的editbin不允许执行此类修改。 所以似乎没有官方方法来“破解”你的* .obj文件

  3. 尝试使用lib / list staticlib.lib查看静态库中的目标文件如果你很幸运,并且你将main.obj放在单独的目标文件中,那么只需/删除该目标文件

  4. 如果3没有帮助尝试自己编写应用程序来编辑COFF文件中的符号。 https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx

从目标文件的开始传递+ 8字节,读取4个字节。 它将以“具有名称的18字节结构。(如果所有名称都是8字节长)”的表偏移到表中。 使用填充残差“name”字节用零编辑所需名称。 我从不尝试与COFF合作。 我在网上找不到像COFF编辑器那样的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM