Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从静态库中删除主函数_C++_Windows - Fatal编程技术网

C++ 从静态库中删除主函数

C++ 从静态库中删除主函数,c++,windows,C++,Windows,我的大部分代码依赖于.lib格式的专有Windows库(静态库)。让我们称之为prop.lib 该库的工作原理是,我创建了一个链接到prop.lib的新共享库。 然后,我可以通过prop.exe(另一个加载我的共享库并运行我的代码的程序)运行我的代码 我想创建一个独立运行的可执行文件,但由于prop.lib包含一个main函数,因此出现了链接器错误 是否有可能从库中删除main函数或创建另一个入口点 我使用VisualStudio2005 编辑:到目前为止,我还没有prop.lib的源代码。您应

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

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

我想创建一个独立运行的可执行文件,但由于prop.lib包含一个main函数,因此出现了链接器错误

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

我使用VisualStudio2005


编辑:到目前为止,我还没有prop.lib的源代码。

您应该意识到这是一项相当低级的任务

  • 解决方法:如果您有权生成可执行文件的配置,则可以在可执行文件生成中指定链接器选项/条目

  • 微软不允许进行这样的修改。因此,似乎没有官方的方法从微软“黑客”你的*.obj文件

  • 如果幸运的话,可以尝试在静态库中的对象文件中查看main.obj,然后只需删除该对象文件

  • 如果3不能帮助您自己编写应用程序来编辑COFF文件中的符号。


  • 从对象文件的开头经过+8字节,读取4字节。它将偏移到具有“18字节结构和名称(如果所有名称都是8字节长)”的表中。编辑所需的名称,用零填充剩余的“名称”字节。我从来没有试过和科夫一起工作。我在网上找不到类似COFF编辑器的东西。

    您应该有两个构建目标:一个用于可执行文件,另一个用于库。main只应内置在可执行文件中,而不应内置在库中。@ChrisMaes前提是OP有一个选择生成目标的选项。如果这是他从客户/供应商处收到的数据包的一部分,他需要回到客户/供应商处,要求他们提供一个重定目标的静态libI。我正在使用eclipse,所以我只是推断:)用十六进制编辑器重命名符号?(不,不要真的这样做。)这不难,当然——只需搜索main并将其更改为mzin或其他什么。尽管如此,这似乎仍然是一个相当棘手的解决问题的方法。