windows – 警告:找不到条目符号nable-stdcall-fixup;违约

前端之家收集整理的这篇文章主要介绍了windows – 警告:找不到条目符号nable-stdcall-fixup;违约前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个mingw包含 gcc 4.6.3,名称为 – i686-w64-mingw32.

Windows上,一个Qt’s.pro文件w.r.t是一个hello world程序:

  1. QT += core gui
  2. TEMPLATE = app
  3. TARGET = ef
  4.  
  5. SOURCES = ef.cpp
  6. DEPENDPATH += .
  7.  
  8. INCLUDEPATH += .
  9. INCLUDEPATH += c:/R-2.15.1/include
  10. INCLUDEPATH += c:/R-2.15.1/library/Rcpp/include
  11. INCLUDEPATH += c:/R-2.15.1/library/RInside/include
  12.  
  13. LIBS += -L c:/R-2.15.1/bin/i386 -lR
  14. LIBS += -L c:/R-2.15.1/library/Rcpp/libs/i386 -lRcpp
  15. LIBS += -L c:/R-2.15.1/library/RInside/libs/i386 -lRInside

该计划编制如下:

注意最后有一个警告.

系统路径如下:

Qt的路径:

请指出我遗漏的一点.

更新:

现在我已经更新了qmake.conf,如下所示:

  1. #
  2. # qmake configuration for win32-g++
  3. #
  4. # Written for MinGW
  5. #
  6.  
  7. MAKEFILE_GENERATOR = MINGW
  8. TEMPLATE = app
  9. CONFIG += qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target precompile_header
  10. QT += core gui
  11. DEFINES += UNICODE QT_LARGEFILE_SUPPORT
  12. QMAKE_COMPILER_DEFINES += __GNUC__ WIN32
  13.  
  14. QMAKE_EXT_OBJ = .o
  15. QMAKE_EXT_RES = _res.o
  16.  
  17. QMAKE_CC = gcc
  18. QMAKE_LEX = flex
  19. QMAKE_LEXFLAGS =
  20. QMAKE_YACC = byacc
  21. QMAKE_YACCFLAGS = -d
  22. QMAKE_CFLAGS =
  23. QMAKE_CFLAGS_DEPS = -M
  24. QMAKE_CFLAGS_WARN_ON = -Wall
  25. QMAKE_CFLAGS_WARN_OFF = -w
  26. QMAKE_CFLAGS_RELEASE = -O2
  27. QMAKE_CFLAGS_DEBUG = -g
  28. QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
  29.  
  30. QMAKE_CXX = g++
  31. QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
  32. QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
  33. QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
  34. QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
  35. QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
  36. QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
  37. QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
  38. QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
  39. QMAKE_CXXFLAGS_RTTI_ON = -frtti
  40. QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti
  41. QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads
  42. QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
  43.  
  44. QMAKE_INCDIR =
  45. QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
  46. QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
  47.  
  48. QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
  49. QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
  50. QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
  51. QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
  52.  
  53. QMAKE_LINK = g++
  54. QMAKE_LINK_C = gcc
  55. QMAKE_LFLAGS = -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
  56. QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads
  57. QMAKE_LFLAGS_EXCEPTIONS_OFF =
  58. QMAKE_LFLAGS_RELEASE = -Wl,-s
  59. QMAKE_LFLAGS_DEBUG =
  60. QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
  61. QMAKE_LFLAGS_WINDOWS = -Wl,windows
  62. QMAKE_LFLAGS_DLL = -shared
  63. QMAKE_LINK_OBJECT_MAX = 10
  64. QMAKE_LINK_OBJECT_SCRIPT= object_script
  65.  
  66.  
  67. QMAKE_LIBS =
  68. QMAKE_LIBS_CORE = -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
  69. QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lws2_32 -lole32 -luuid -luser32 -ladvapi32
  70. QMAKE_LIBS_NETWORK = -lws2_32
  71. QMAKE_LIBS_OPENGL = -lopengl32 -lglu32 -lgdi32 -luser32
  72. QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32
  73. QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain
  74.  
  75. !isEmpty(QMAKE_SH) {
  76. MINGW_IN_SHELL = 1
  77. QMAKE_DIR_SEP = /
  78. QMAKE_COPY = cp
  79. QMAKE_COPY_DIR = xcopy /s /q /y /i
  80. QMAKE_MOVE = mv
  81. QMAKE_DEL_FILE = rm
  82. QMAKE_MKDIR = mkdir
  83. QMAKE_DEL_DIR = rmdir
  84. QMAKE_CHK_DIR_EXISTS = test -d
  85. } else {
  86. QMAKE_COPY = copy /y
  87. QMAKE_COPY_DIR = xcopy /s /q /y /i
  88. QMAKE_MOVE = move
  89. QMAKE_DEL_FILE = del
  90. QMAKE_MKDIR = mkdir
  91. QMAKE_DEL_DIR = rmdir
  92. QMAKE_CHK_DIR_EXISTS = if not exist
  93. }
  94.  
  95. QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc.exe
  96. QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic.exe
  97. QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc.exe
  98.  
  99. QMAKE_IDL = midl
  100. QMAKE_LIB = ar -ru
  101. QMAKE_RC = windres
  102. QMAKE_ZIP = zip -r -9
  103.  
  104. QMAKE_STRIP = strip
  105. QMAKE_STRIPFLAGS_LIB += --strip-unneeded
  106. load(qt_config)

错误现在已更改为:

UPDATE

我刚刚删除了Wl和-enable-std之间的空格..以上错误消失了:

this merge request所示,qmake.conf文件中存在一个错误,该错误配置了每次使用qmake的默认配置时使用的变量.

选项-enable-stdcall-fixup需要以-Wl为前缀,以便通过mingw32-g正确解析,因为-e …将在解析时被拆分为-e ….此前缀仅表示“不要将以下内容解析为-e nable-stdcall-fixup,而是解析为-enable-stdcall-fixup”.

qmake.conf文件包含-Wl但是在错误的行中,因此合并请求表示

the leading “-Wl,” was apparently accidentally split off to the wrong
line.

补丁将-Wl向上移动一行.您可以在qmake.conf文件上手动执行此操作,该文件应位于mkspecs / win32-g /qmake.conf下的Qt安装下.更改以下行:

  1. QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-runtime-pseudo-reloc
  2. QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl

进入这个:

  1. QMAKE_LFLAGS = -Wl,-enable-runtime-pseudo-reloc
  2. QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads

请注意,-Wl和-enable-stdcall-fixup之间不应有空格.它应该作为一个单独的参数传递给g,以实现我们想要的.

猜你在找的Windows相关文章