隐藏控制台窗口LNK4044警告

时间:2011-06-27 15:57:46

标签: windows compiler-construction console warnings scons

我正在使用scons编译我的C ++应用程序来禁用控制台窗口,但我无法完成这项工作。 在互联网上搜索,在StackOverflow中,我发现这条线可以工作 env.Append( LINKFLAGS=['-Wl,-subsystem,windows'] )
问题是我总是收到一条警告信息,忽略这一行。 这是消息:

LINK : warning LNK4044: unrecognized option '/Wl,-subsystem,windows'; ignored

我已经尝试过了: env.Append( LINKFLAGS=['-Wl,-subsystem:windows'] )
env.Append( LINKFLAGS='-Wl,-subsystem,windows' )
env.Append( LINKFLAGS=['/Wl,-subsystem,windows'] )
env.Append( LINKFLAGS=['/Wl,-subsystem:windows'] )

就像你注意到的那样,我已经完成了许多可能性,但没有成功。 下面我发布我的SConstruct文件的一些部分。 非常感谢任何帮助。

感谢所有回复

# GNU GCC
if 'gcc' in env[ 'compiler' ]:
env.Append( CCFLAGS='-Wall', CPPDEFINES=['GCC'] )
if int( debug ):
    env.Append( CCFLAGS='-g', LINKFLAGS='-g' )
else:
    env.Append( CCFLAGS='-O2', LINKFLAGS='-O2' )`
# MSVC v9 
elif 'msvc' in env['compiler']:
env.Append( LINKCOM=[ 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1' ] )
env.Append( SHLINKCOM=[ 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;2' ] )
env.Append( CCFLAGS='/W3 /EHsc', CPPDEFINES=[ 'WIN32', 'WINDOWS', 'MSVC', '_CRT_SECURE_NO_WARNINGS' ] )
env.Append( CPPDEFINES='MSVC_DLL' )
env.Append( LIBS = 'WS2_32' )
env.AppendUnique( LINKFLAGS=['-Wl,-subsystem,windows'] )

if int( debug ):
    env.Append( CCFLAGS='/Od /RTC1 /MDd /Gy /Zi', LINKFLAGS='/DEBUG' )
else:
    env.Append( CCFLAGS='/O2 /Oi /GL /MD', LINKFLAGS='/LTCG')`

2 个答案:

答案 0 :(得分:0)

env.Append(LINKFLAGS = ['/ Wl','/ SUBSYSTEM:WINDOWS'))

不确定它是否区分大小写,但应该有效。你的选择似乎没有得到链接。

答案 1 :(得分:0)

对不起伙计们。我犯了一个错误。 Wl,仅用于抑制警告; 就像你说的:只是在SConstruct中插入env.Append(LINKFLAGS=['/Wl', '/SUBSYSTEM:WINDOWS'])。 我犯了一个非常假的错误。 在main.cpp中,我忘记了如何在控制台或窗口应用程序上运行我的软件进行简单验证。 只需一个简单的#ifdef WIN32_LEAN_AND_MEAN

感谢您的支持。