1

对于客户端,我尝试在 Visual Studio 2010 IDE 中重新创建基于命令行的构建工具。从项目中编译库,包括我已经确定的 C/C++ 源文件,链接命令行让我很伤心,因为只有当库的给出顺序与命令行工具完全相同时,可执行文件才能正确链接。

命令行是这样的:

link.exe -subsystem:console -machine:I386 -verbose:lib 
-nodefaultlib:libc.lib -nodefaultlib:libcd.lib -nodefaultlib:libcmt.lib -nodefaultlib:libcmtd.lib 
-DEBUG 
-out:myout.exe 
-pdb:myout.pdb 
-libpath:../../path/to/libs
libcmtd.lib kernel32.lib user32.lib ws2_32.lib netapi32.lib comctl32.lib gdi32.lib comdlg32.lib advapi32.lib winmm.lib imagehlp.lib shell32.lib  
x_mylib.lib a_mylib.lib y_mylib3.lib z_my.lib  etc....

如果 IDE 编译的 .libs 与此命令行链接,则 .exe 是正确的,但是我无法让 IDE 精确链接到这个 .lib 顺序 - 它坚持按字母顺序对所有库进行排序和链接。

有什么想法吗? 避免陷入关于这一切意义的哲学辩论的诱惑,我无法更改基于命令行的构建工具

4

1 回答 1

0

所以,在摆弄了一个这样的答案之后......

如上所述,解决方案中有一些项目链接到其相应的静态库:

a_mylib.vcxproj b_mylib.vcxproj ... x_mylib.vcxproj y_mylib.vcxproj z_mylib.vcxproj

添加另一个没有源文件但包含以上所有依赖项的静态库项目my_libs.vcxproj使得整个源代码易于构建。最后my_exe.vcxproj添加可执行文件,其中仅包含 my_libs 作为依赖项,所有 ?_mylib.libs 作为特定链接器输入,按所需顺序。

当你知道怎么做时很容易。

于 2012-10-18T07:19:37.157 回答