скрытие консоли окна LNK4044 предупреждение - PullRequest
0 голосов
/ 27 июня 2011

Я использую 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 голосов
/ 05 июля 2011

Простите, ребята. Я сделал ошибку. Wl, просто для предупреждения супресса; Как вы сказали: это просто вставить env.Append(LINKFLAGS=['/Wl', '/SUBSYSTEM:WINDOWS']) в SConstruct. Я сделал очень глупую ошибку. В main.cpp я забыл сделать простую проверку, запускаю ли я свое программное обеспечение на консоли или в оконном приложении. Просто простой #ifdef WIN32_LEAN_AND_MEAN

спасибо за вашу поддержку.

0 голосов
/ 01 июля 2011

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

не уверен, чувствителен ли он к регистру, но это должно работать. Кажется, ваши параметры просто не передаются компоновщику.

...