windows - Compiling c++ and cuda code with MinGW in QTCreator -


im trying compile simple cuda program (i took source code compiling cuda code in qt creator on windows) .pro file:

target = cuda  # define output directories destdir = release objects_dir = release/obj cuda_objects_dir = release/cuda  # sourcefiles sources += main.cpp  # makes .cu files appear in project other_files +=  vectoraddition.cu  # cuda settings <-- may change depending on system cuda_sources += vectoraddition.cu  cuda_sdk = "c:/cuda/cudasamples"   # path cuda sdk install cuda_dir = "c:/cuda/cudatoolkit"            # path cuda toolkit install system_name = win32         # depending on system either 'win32', 'x64', or 'win64' system_type = 32            # '32' or '64', depending on system cuda_arch = sm_11           # type of cuda architecture, example 'compute_10', 'compute_11', 'sm_10' temp = 'c:\program files (x86)\microsoft visual studio 10.0\vc\bin' #tried add vs compiler path, seems woring. when changed higher version error appeared vs = $$join(temp,'" -ccbin "','-ccbin "','"') #joing path vs compiler quotes nvcc_options = --use_fast_math $$vs  # include paths includepath += $$cuda_dir/include \                $$cuda_sdk/common/inc/ \                $$cuda_sdk/../shared/inc/ \  # library directories qmake_libdir += $$cuda_dir/lib/$$system_name \                 $$cuda_sdk/common/lib/$$system_name \                 $$cuda_sdk/../shared/lib/$$system_name \                 c:/cuda/vs10/vc/lib \   #tried add vs runtime libraries, after errors disappeared, , new emerged guess worked qmake_libs += -lmsvcrt -llibcmt -llibcpmt #after adding vs runtime qmake_libdir line seems have no effect # add necessary libraries libs += -lcuda -lcudart #libs += -lmsvcr100 qmake_cflags_release += -v msvcrt_link_flag_debug   = "/mtd" msvcrt_link_flag_release = "/mt"  # following makes sure path names (which include spaces) put between quotation marks cuda_inc = $$join(includepath,'" -i"','-i"','"') #this nested in config (see link above) dont think worked     cuda.input = cuda_sources     cuda.output = $$cuda_objects_dir/${qmake_file_base}_cuda.o     cuda.commands = $$cuda_dir/bin/nvcc.exe $$nvcc_options $$cuda_inc $$libs --machine $$system_type -arch=$$cuda_arch \                     -xcompiler "/wd4819,/ehsc,/w3,/nologo,/o2,/zi" \                      -xptxas -v \                     -xcompiler $$msvcrt_link_flag_release \      -c -o ${qmake_file_out} ${qmake_file_name} #xptxas -v command output during cuda compiling (nvvc). -xcompiler, honesly have no idea "/wd4819,/ehsc,/w3,/nologo,/o2,/zi" \ means,i copied chinese webpage , again errors went away     cuda.dependency_type = type_c     qmake_extra_compilers += cuda  headers += \     vectoraddition.h #empty header, trying something. 

this compiler output:

13:09:17: running steps project cuda... 13:09:17: starting: "f:\programs\qt5.1.1\tools\mingw48_32\bin\mingw32-make.exe" clean f:/programs/qt5.1.1/tools/mingw48_32/bin/mingw32-make -f makefile.release clean mingw32-make[1]: entering directory 'f:/workspaceschool/build-cuda-desktop_qt_5_1_1_mingw_32bit-release' del release\cuda\vectoraddition_cuda.o del release\cuda\vectoraddition_cuda.o release\obj\main.o not find f:\workspaceschool\build-cuda-desktop_qt_5_1_1_mingw_32bit-release\release\cuda\vectoraddition_cuda.o mingw32-make[1]: leaving directory 'f:/workspaceschool/build-cuda-desktop_qt_5_1_1_mingw_32bit-release' f:/programs/qt5.1.1/tools/mingw48_32/bin/mingw32-make -f makefile.debug clean mingw32-make[1]: entering directory 'f:/workspaceschool/build-cuda-desktop_qt_5_1_1_mingw_32bit-release' del release\cuda\vectoraddition_cuda.o not find f:\workspaceschool\build-cuda-desktop_qt_5_1_1_mingw_32bit-release\release\cuda\vectoraddition_cuda.o del release\cuda\vectoraddition_cuda.o debug\obj\main.o not find f:\workspaceschool\build-cuda-desktop_qt_5_1_1_mingw_32bit-release\release\cuda\vectoraddition_cuda.o not find f:\workspaceschool\build-cuda-desktop_qt_5_1_1_mingw_32bit-release\debug\obj\main.o mingw32-make[1]: leaving directory 'f:/workspaceschool/build-cuda-desktop_qt_5_1_1_mingw_32bit-release' 13:09:18: process "f:\programs\qt5.1.1\tools\mingw48_32\bin\mingw32-make.exe" exited normally. 13:09:18: starting: "f:\programs\qt5.1.1\5.1.1\mingw48_32\bin\qmake.exe" f:\workspaceschool\cuda\cuda.pro -r -spec win32-g++ -v qmake version 3.0 using qt version 5.1.1 in f:\programs\qt5.1.1\5.1.1\mingw48_32\lib 13:09:18: process "f:\programs\qt5.1.1\5.1.1\mingw48_32\bin\qmake.exe" exited normally. 13:09:18: starting: "f:\programs\qt5.1.1\tools\mingw48_32\bin\mingw32-make.exe"  f:/programs/qt5.1.1/tools/mingw48_32/bin/mingw32-make -f makefile.release mingw32-make[1]: entering directory 'f:/workspaceschool/build-cuda-desktop_qt_5_1_1_mingw_32bit-release' c:\cuda\cudatoolkit\bin\nvcc.exe --use_fast_math -ccbin "c:\program files (x86)\microsoft visual studio 10.0\vc\bin" -i"c:/cuda/cudatoolkit/include" -i"c:/cuda/cudasamples/common/inc/" -i"c:/cuda/cudasamples/../shared/inc/" -lcuda -lcudart --machine 32 -arch=sm_11 -xcompiler /wd4819,/ehsc,/w3,/nologo,/o2,/zi -xptxas -v -xcompiler /mt -c -o release\cuda\vectoraddition_cuda.o ..\cuda\vectoraddition.cu ptxas : info : 0 bytes gmem ptxas : info : compiling entry function '__cuda_dummy_entry__' 'sm_11' ptxas : info : used 0 registers g++ -c -pipe -fno-keep-inline-dllexport -o2 -frtti -wall -wextra -fexceptions -mthreads -dunicode -dqt_no_debug -dqt_gui_lib -dqt_core_lib -dqt_needs_qmain -i..\cuda -i"c:\cuda\cudatoolkit\include" -i"c:\cuda\cudasamples\common\inc" -i"c:\cuda\cudasamples\..\shared\inc" -i"..\..\programs\qt5.1.1\5.1.1\mingw48_32\include" -i"..\..\programs\qt5.1.1\5.1.1\mingw48_32\include\qtgui" -i"..\..\programs\qt5.1.1\5.1.1\mingw48_32\include\qtcore" -i"release" -i"." -i"..\..\programs\qt5.1.1\5.1.1\mingw48_32\mkspecs\win32-g++" -o release\obj\main.o ..\cuda\main.cpp in file included c:\cuda\cudatoolkit\include/device_types.h:53:0,                  c:\cuda\cudatoolkit\include/builtin_types.h:56,                  ..\cuda\main.cpp:2: c:\cuda\cudatoolkit\include/host_defines.h:79:0: warning: "__cdecl" redefined [enabled default]  #define __cdecl  ^ ..\cuda\main.cpp:1:0: note: location of previous definition  #include <cuda.h>  ^ in file included c:\cuda\cudatoolkit\include/builtin_types.h:60:0,                  ..\cuda\main.cpp:2: c:\cuda\cudatoolkit\include/vector_types.h:73:0: warning: ignoring #pragma warning  [-wunknown-pragmas]  #pragma warning(push)  ^ c:\cuda\cudatoolkit\include/vector_types.h:74:0: warning: ignoring #pragma warning  [-wunknown-pragmas]  #pragma warning(disable: 4201 4408)  ^ c:\cuda\cudatoolkit\include/vector_types.h:350:0: warning: ignoring #pragma warning  [-wunknown-pragmas]  #pragma warning(pop)  ^ g++ -wl,-s -wl,-subsystem,windows -mthreads -o release\cuda.exe release/cuda/vectoraddition_cuda.o release/obj/main.o  -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmain -lc:\cuda\cudatoolkit\lib\win32 -lc:\cuda\cudasamples\common\lib\win32 -lc:\cuda\cudasamples\..\shared\lib\win32 -lc:\cuda\vs10\vc\lib -lqmake_libs -l+= -l-lmsvcrt -l-llibcmt -l-llibcpmt -lcuda -lcudart -lf:\programs\qt5.1.1\5.1.1\mingw48_32\lib -lqt5gui -lqt5core  warning: .drectve `/failifmismatch:"_msc_ver=1600" /failifmismatch:"_iterator_debug_level=0" /defaultlib:"libcpmt" /defaultlib:"libcmt" /defaultlib:"oldnames" ' unrecognized f:/programs/qt5.1.1/tools/mingw48_32/bin/../lib/gcc/i686-w64-mingw32/4.8.0/../../../../i686-w64-mingw32/lib/../lib/crt2.o:crtexe.c:(.text+0xcf): undefined reference `_imp___fmode' f:/programs/qt5.1.1/tools/mingw48_32/bin/../lib/gcc/i686-w64-mingw32/4.8.0/../../../../i686-w64-mingw32/lib/../lib/crt2.o:crtexe.c:(.text+0x2de): undefined reference `_imp___acmdln' f:/programs/qt5.1.1/tools/mingw48_32/bin/../lib/gcc/i686-w64-mingw32/4.8.0/../../../../i686-w64-mingw32/lib/../lib/crt2.o:crtexe.c:(.text+0x3cf): undefined reference `_imp____initenv' f:/programs/qt5.1.1/tools/mingw48_32/bin/../lib/gcc/i686-w64-mingw32/4.8.0/../../../../i686-w64-mingw32/bin/ld.exe: f:/programs/qt5.1.1/tools/mingw48_32/bin/../lib/gcc/i686-w64-mingw32/4.8.0/../../../../i686-w64-mingw32/lib/../lib/crt2.o: bad reloc address 0x0 in section `.crt$xcaa' collect2.exe: error: ld returned 1 exit status makefile.release:78: recipe target 'release\cuda.exe' failed mingw32-make[1]: leaving directory 'f:/workspaceschool/build-cuda-desktop_qt_5_1_1_mingw_32bit-release' makefile:34: recipe target 'release' failed mingw32-make[1]: *** [release\cuda.exe] error 1 mingw32-make: *** [release] error 2 13:09:28: process "f:\programs\qt5.1.1\tools\mingw48_32\bin\mingw32-make.exe" exited code 2. error while building/deploying project cuda (kit: desktop qt 5.1.1 mingw 32bit) when executing step 'make' 13:09:28: elapsed time: 00:11. 

and issues (can't post images due low rep): issues

if im not mistaken, problem linking cuda object file (vectoraddition_cuda.o) compiled nvvc.exe cl.exe , vs libs. mingw(g++ compiler) trying somehow link cuda object file , c++ object file (main.o) libs executable file. g++ doesnt know vs runtime libs , throwing these errors. guess need somehow pass vs libs g++. how can fix this?

i'm bit confused, using mingw or visual? title seems state using mingw project file seems use mix of both. can't mix two. if compiled (or downloaded binary directly nvidia) cuda visual studio 2010, have use vs10 compile project, otherwise won't work.

i never used cuda myself seems system requirements mention visual studio 2008, 2010 , 2012. if want use qt, it's possible, have grab qt compiled vs (there builds 32 , 64 bit both on download page. can visual studio express for free long don't create commercial application it.

to use qtcreator msvc backend compiler go tools > options > build , run > kits , add new kit msvc compiler, cdb debugger , qt version downloaded (it must have been compiled same visual studio version otherwise won't work). open project, go projects tab (on left) , select kit created. should clean .pro file before work smoothly.

on side note, there few things seems out of place in linker line:

g++ -wl,-s -wl,-subsystem,windows -mthreads -o release\cuda.exe release/cuda/vectoraddition_cuda.o release/obj/main.o  -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmain -lc:\cuda\cudatoolkit\lib\win32 -lc:\cuda\cudasamples\common\lib\win32 -lc:\cuda\cudasamples\..\shared\lib\win32 -lc:\cuda\vs10\vc\lib -lqmake_libs -l+= -l-lmsvcrt -l-llibcmt -l-llibcpmt -lcuda -lcudart -lf:\programs\qt5.1.1\5.1.1\mingw48_32\lib -lqt5gui -lqt5core  

first -l+=, might caused escaping backslash @ end of qmake_libdir.

then syntax -l-lmsvcrt seems wrong. might because using qmake_libs, never had use it, , according the documentation shouldn't either internal variable. same goes qmake_libdir btw. use libs variable external dependency.


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -