【发布时间】:2016-10-27 23:14:30
【问题描述】:
当我从应用程序 (wxWidgets C++) 运行 Windows 批处理文件时,GNU LD 显示错误
C:\..path..\bin/ld.exe: invalid subsystem type Windows
当双击同一个 Windows 批处理文件时,GNU LD 工作!
LD.bat
@echo off
Set PATH=C:\AAA\BBB\GCC\bin
"C:\AAA\BBB\GCC\bin\g++.exe" -L"C:\AAA\BBB\GCC\lib\gcc_lib" -o "C:\Users\XXX\Desktop\Test.exe" "C:\Users\XXX\Desktop\Test.obj" "C:\Users\XXX\Desktop\Test.res" -s -mthreads -lwxmsw30u_core -lwxbase30u ... -mwindows -static-libgcc -static-libstdc++ -finput-charset=utf-8 -Wl,--gc-sections -Os 2> "C:\Users\XXX\Desktop\Test.log"
App.cpp
wxArrayString output;
wxArrayString errors;
wxString CMD;
CMD = "C:\\Users\\XXX\\Desktop\\Test.bat";
wxExecute (CMD, output, errors);
如果应用程序执行批处理文件 ==> Test.log 显示错误。
如果通过双击执行批处理文件 ==> Test.log 显示 NO 错误。
问题已通过删除 -mwindows 标志得到解决,但如您所知,可执行文件未链接为 GUI。那么 GNU LD 有什么问题?
【问题讨论】:
-
比较两种启动模式的环境差异。
-
不,在我的情况下,环境不是问题,它是相同的,甚至使用不同的环境进行测试 LD 无法与“-mwindows”标志链接!
标签: c++ batch-file linker ld