静态链接时为什么需要*.obj文件?

Jor*_*jon 5 c++ static-linking visual-studio-2008

我不知道为什么会这样.我在多个项目中分发静态*.lib,但是这个静态lib会生成许多*.obj文件.好像我需要用*.lib分发那些*.obj文件.否则,我收到此错误:

1>LINK : fatal error LNK1181: cannot open input file 'nsglCore.obj'
Run Code Online (Sandbox Code Playgroud)

为什么是这样?有没有办法将数据包含在*.lib中的*.obj文件中?也许在编译器中切换?

这是我对静态库的配置:

C/C++

/Od /GT /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /MD /Yu"stdafx.hpp" /Fp"e:\Development\Projects\nsGameLib\Source\Core\Intermediate\nsglCore-Win32-Release.pch" /Fo"e:\Development\Projects\nsGameLib\Source\Core\Intermediate\\" /Fd"e:\Development\Projects\nsGameLib\Source\Core\Intermediate\vc90-Release.pdb" /W3 /nologo /c /Zi /TP /errorReport:prompt
Run Code Online (Sandbox Code Playgroud)

图书管理员

/OUT:"e:\Development\Projects\nsGameLib\Source\Core\Output\nsglCore-Win32-Release.lib" /NOLOGO /LTCG
Run Code Online (Sandbox Code Playgroud)

这是我使用静态库的项目配置:

C/C++

/O2 /Oi /I "E:\Development\Projects\nsGameLib\Samples\\DummyEngine\\" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MD /Gy /Fo"e:\Development\Projects\nsGameLib\Samples\OnlyCore\Intermediate\\" /Fd"e:\Development\Projects\nsGameLib\Samples\OnlyCore\Intermediate\vc90-Release.pdb" /W3 /nologo /c /Zi /TP /errorReport:prompt
Run Code Online (Sandbox Code Playgroud)

链接

/OUT:"e:\Development\Projects\nsGameLib\Samples\OnlyCore\Output\SampleOnlyCore-Win32-Release.exe" /INCREMENTAL:NO /NOLOGO /LIBPATH:"E:\Development\Projects\nsGameLib\Samples\..\Deployment\Libraries" /MANIFEST /MANIFESTFILE:"e:\Development\Projects\nsGameLib\Samples\OnlyCore\Intermediate\SampleOnlyCore-Win32-Release.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"e:\Development\Projects\nsGameLib\Samples\OnlyCore\Intermediate\SampleOnlyCore-Win32-Release.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /LTCG /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:PROMPT nsglCore  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
Run Code Online (Sandbox Code Playgroud)

D.S*_*ley 5

我相信您的链接器行不正确.库应该有一个.lib后缀.所以nsglCore应该是nsglCore-Win32-Release.lib或者可能nsglCore-$(TargetPlatform)-$(ConfigurationName).lib或者正确的宏扩展是什么.