Qt代码块-出现严重错误
在代码块中创建qt项目并运行它之后,我得到:Qt代码块-出现严重错误,qt,codeblocks,Qt,Codeblocks,在代码块中创建qt项目并运行它之后,我得到: 有人知道如何解决吗? 谢谢在我看来,这就像是针对一个版本的Qt进行构建,并在运行时针对另一个版本进行链接。运行QtSDK维护工具并删除您不需要的任何版本的Qt Desktop。然后,您可能需要将代码块重新指向正确的头 我猜,如果您是从代码块内运行,那么您必须明确指定在运行新构建的应用程序时要使用哪些DLL。如果是这样,请确保这些是正确的版本(即用QT INSTALL DIR\Desktop\4.7.x\mingw\bin中的DLL替换它们。[虽然我
有人知道如何解决吗?
谢谢在我看来,这就像是针对一个版本的Qt进行构建,并在运行时针对另一个版本进行链接。运行QtSDK维护工具并删除您不需要的任何版本的Qt Desktop。然后,您可能需要将代码块重新指向正确的头 我猜,如果您是从代码块内运行,那么您必须明确指定在运行新构建的应用程序时要使用哪些DLL。如果是这样,请确保这些是正确的版本(即用QT INSTALL DIR\Desktop\4.7.x\mingw\bin中的DLL替换它们。[虽然我目前不在工作电脑上,因此此路径可能有点错误。请确保您位于正确的4.7.x文件夹中])
老实说,如果你是在Windows上运行,为什么不使用QtCreator呢?除了在GDB集成方面稍有欠缺外,它还相当不错,你会发现这样的问题很难解决。在我看来,这就像是在构建一个版本的Qt,并在运行时链接另一个版本。运行QtSDK维护工具并删除您不需要的任何版本的Qt Desktop。然后,您可能需要将代码块重新指向正确的头 我猜,如果您是从代码块内运行,那么您必须明确指定在运行新构建的应用程序时要使用哪些DLL。如果是这样,请确保这些是正确的版本(即用QT INSTALL DIR\Desktop\4.7.x\mingw\bin中的DLL替换它们。[虽然我目前不在工作电脑上,因此此路径可能有点错误。请确保您位于正确的4.7.x文件夹中]) 老实说,如果你是在Windows上运行,为什么不使用QtCreator呢?除了在GDB集成方面稍有欠缺外,它还相当不错,你会发现这样的问题很难遇到。这是(尤其是在Windows上)一个常见的问题。安装QtSDK时,您将获得至少2个同名但版本不同的.dll。您可能会链接到预期的(dev-)库,但在运行时使用了设计器/创建者的版本 避免这种情况的最简单方法是将正确版本的dll与二进制文件(.exe和其他文件)一起部署到一个单独的文件夹中。这可以通过修改构建脚本来实现。它取决于您的构建系统,通常是qmake/.pro或cmake/CMakeLists.txt 至于CMake,给定一个包含要部署的文件路径的环境变量
myqtdldir
,您可以使用类似以下内容:
configure_file($ENV{MYQTDLLDIR}/QtCore4.dll ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
configure_file($ENV{MYQTDLLDIR}/QtGui4.dll ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
从cmake中剥离的文档--完整帮助
:
配置文件将文件复制到另一个位置并修改其
内容
配置_文件(
[COPYONLY][ESCAPE_QUOTES][@ONLY])
将文件复制到文件并替换变量
文件内容中引用的值。如果你是亲戚
相对于当前源目录对其求值的路径。
文件必须是文件,而不是目录。如果是
相对于当前二进制文件计算的相对路径
目录如果将现有目录命名为输入文件
以其原始名称放置在该目录中
此命令将替换输入文件中引用为的任何变量
${VAR}或@VAR@及其值由CMake确定。如果a变量未定义,它将被替换为零。如果
指定COPYONLY,则不会进行变量扩展。如果 如果指定了ESCAPE_引号,则任何替换的引号都将是C样式的 逃脱。该文件将使用CMake的当前值进行配置 变量。如果指定了@ONLY,则仅使用@VAR@形式的变量
将被替换,${VAR}将被忽略。这对
正在配置使用${VAR}的脚本。任何出现的#cmakedefine VAR将替换为#定义VAR或/*#未定义VAR*/
取决于CMake中VAR的设置。任何
#cmakedefine01 VAR将替换为#define VAR 1或 #定义VAR 0>取决于VAR在中的计算结果是TRUE还是FALSE 克马克 至于qmake,您可以使用
安装
(在调用make install
时使用)或在链接后执行“普通命令”。使用:
qmake使用命令执行:
win32 {
EXTRA_BINFILES += \
$${MYQTDLLDIR}/QtCore4.dll \
$${MYQTDLLDIR}/QtGui4.dll
EXTRA_BINFILES_WIN = $${EXTRA_BINFILES}
EXTRA_BINFILES_WIN ~= s,/,\\,g
DESTDIR_WIN = $${DESTDIR}
DESTDIR_WIN ~= s,/,\\,g
for(FILE,EXTRA_BINFILES_WIN){
QMAKE_POST_LINK +=$$quote(cmd /c copy /y $${FILE} $${DESTDIR_WIN}$$escape_expand(\n\t))
}
}
这是(特别是在Windows上)一个常见问题。安装QtSDK时,您将获得至少2个同名但版本不同的.dll。您可能会链接到预期的(dev-)库,但在运行时使用了设计器/创建者的版本
避免这种情况的最简单方法是将正确版本的dll与二进制文件(.exe和其他文件)一起部署到一个单独的文件夹中。这可以通过修改构建脚本来实现。它取决于您的构建系统,通常是qmake/.pro或cmake/CMakeLists.txt
至于CMake,给定一个包含要部署的文件路径的环境变量myqtdldir
,您可以使用类似以下内容:
configure_file($ENV{MYQTDLLDIR}/QtCore4.dll ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
configure_file($ENV{MYQTDLLDIR}/QtGui4.dll ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
从cmake中剥离的文档--完整帮助
:
配置文件将文件复制到另一个位置并修改其
内容
配置_文件(
[COPYONLY][ESCAPE_QUOTES][@ONLY])
将文件复制到文件并替换变量
文件内容中引用的值。如果你是亲戚
相对于当前源目录对其求值的路径。
文件必须是文件,而不是目录。如果是
相对于当前二进制文件计算的相对路径
目录如果将现有目录命名为输入文件
以其原始名称放置在该目录中
此命令将替换任何变量