【发布时间】:2011-02-17 22:39:39
【问题描述】:
我有一个预先存在的可执行文件,但我没有源代码,它想要与我确实有源代码的目标文件或静态库 (C++) 链接。我正在使用 Visual Studio 8.0。
关于这个问题的第一件事,请不要问我为什么需要这样做。我只是想知道怎么做(我很确定可以做到)。
我尝试将“myprogram.exe”可执行文件添加到“附加依赖项”C++ 链接器项目属性中。这会产生以下链接器命令行选项:
/OUT:"C:\Users\me\Documents\Visual Studio 2008\Projects\SampleCppLibrary\Debug\SampleCppLibrary.lib" /NOLOGO myprogram.exe
当我构建项目时,我得到了这个错误:
Error 1 fatal error LNK1107: invalid or corrupt file: cannot read at 0x268 c:\Users\me\Documents\Visual Studio 2008\Projects\SampleCppLibrary\SampleCppLibrary\myprogram.exe 1 SampleCppLibrary
我认为尝试创建一个链接了可执行文件的 .lib 可能本质上是错误的。所以我把项目类型改成了exe,我故意不给它一个主入口点。相反,我给了它:
extern int _tmain(int argc, _TCHAR* argv[]);
我希望预先存在的可执行文件中的入口点可以填补链接器的空白。不幸的是,错误保持不变。这个概念有问题吗(我已经知道这很奇怪)?或者我可能需要设置额外的标志来指示所链接的 exe 的性质?
【问题讨论】:
标签: c++ visual-studio linker