C++ 使用Microsoft Visual Studio 2010 IDE精确控制库链接顺序
对于一个客户端,我试图在VisualStudio2010 IDE中重新创建一个基于命令行的构建工具。从项目中编译libs,包括我已经确定的C/C++源文件,link命令行让我很难过,因为如果libs的顺序与命令行工具完全相同,那么可执行文件只能正确链接 命令行如下所示:C++ 使用Microsoft Visual Studio 2010 IDE精确控制库链接顺序,c++,c,linker,ide,C++,C,Linker,Ide,对于一个客户端,我试图在VisualStudio2010 IDE中重新创建一个基于命令行的构建工具。从项目中编译libs,包括我已经确定的C/C++源文件,link命令行让我很难过,因为如果libs的顺序与命令行工具完全相同,那么可执行文件只能正确链接 命令行如下所示: link.exe -subsystem:console -machine:I386 -verbose:lib -nodefaultlib:libc.lib -nodefaultlib:libcd.lib -nodefaultl
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顺序精确链接-它坚持按字母顺序对所有lib排序并链接
有什么想法吗?
为了避免陷入关于这一切意义的哲学争论中,我无法改变基于命令行的构建工具,因此,在反复修改了答案之后 如上所述,解决方案中有一些项目链接到它们相应的静态库: a_mylib.vcxproj b_mylib.vcxproj ... x_mylib.vcxproj y_mylib.vcxproj z_mylib.vcxproj 添加另一个静态库项目my_libs.vcxproj,该项目没有源文件,但包含上述所有依赖项,从而使整个源代码易于构建。最后,添加了可执行文件my_exe.vcxproj,其中仅包含作为依赖项的my_lib,以及按照所需顺序包含作为特定链接器输入的所有?_mylib.lib 当你知道怎么做的时候很容易