【发布时间】:2014-11-28 03:08:52
【问题描述】:
我在调试一个简单的 cpp 代码时遇到了问题(它调用了一些 CUDA 函数,如 cuInit()、cuDeviceGetCount()..)。当我在 CPP 代码中设置断点并开始调试时,我收到以下消息:
这似乎不是“调试”版本。
当我删除所有 CUDA 调用并且不将程序与 cuda.lib 和 cudart.lib 链接时,代码是可调试的(可以在断点处停止程序并且不显示错误消息)。
这是我的 CPP 代码:
#include <QtCore/QCoreApplication>
#include <QDebug>
#include <cuda.h>
#include <builtin_types.h>
int main(int argc, char* argv [])
{
QCoreApplication(argc, argv);
int deviceCount = 0;
int cudaDevice = 0;
char cudaDeviceName [100];
cuInit(0);
cuDeviceGetCount(&deviceCount);
cuDeviceGet(&cudaDevice, 0);
cuDeviceGetName(cudaDeviceName, 100, cudaDevice);
qDebug() << "Number of devices: " << deviceCount;
qDebug() << "Device name:" << cudaDeviceName;
}
这是我的 .pro 文件:
QT += core
QT -= gui
TARGET = cudatest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
#################################
# Begin CUDA configuration
win32 {
CUDA_PATH = "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v6.5"
CUDA_INC_DIR = $$CUDA_PATH/include
contains(QMAKE_TARGET.arch, x86_64) {
SYSTEMNAME = x64
SYSTEMTYPE = 64
} else {
SYSTEMNAME = Win32
SYSTEMTYPE = 32
}
CUDA_LIB_DIR = $$CUDA_PATH/lib/$$SYSTEMNAME
QMAKE_CXXFLAGS_RELEASE -= -MD
QMAKE_CXXFLAGS_RELEASE += -MT
QMAKE_CXXFLAGS_DEBUG -= -MDd
QMAKE_CXXFLAGS_DEBUG += -MTd
}
INCLUDEPATH += $$CUDA_INC_DIR
LIBS += -L$$CUDA_LIB_DIR -lcuda -lcudart
#End CUDA configuration
########################
环境:
Qt Creator 3.2.2
CUDA v6.5
CPP 编译器:VC++ 2013 Express
调试器:C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\cdb.exe
Qt 5.3.2(VC++ 2013编译,32位)
我尝试对 VC++ 2010 Proffesional 执行相同的操作,但结果相同。
谁能给我一个建议,可能是哪里出了问题?
谢谢。
【问题讨论】: