Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.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++ 使用Microsoft Visual Studio 2010 IDE精确控制库链接顺序_C++_C_Linker_Ide - Fatal编程技术网

C++ 使用Microsoft Visual Studio 2010 IDE精确控制库链接顺序

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

对于一个客户端,我试图在VisualStudio2010 IDE中重新创建一个基于命令行的构建工具。从项目中编译libs,包括我已经确定的C/C++源文件,link命令行让我很难过,因为如果libs的顺序与命令行工具完全相同,那么可执行文件只能正确链接

命令行如下所示:

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

当你知道怎么做的时候很容易