在 QTCreator 中使用 MinGW 编译 c++ 和 cuda 代码

2024-01-04

我正在尝试编译简单的cuda程序(我从在 Windows 上的 Qt Creator 中编译 Cuda 代码 https://stackoverflow.com/questions/12266264/compiling-cuda-code-in-qt-creator-on-windows) 这是我的 .pro 文件:

TARGET = Cuda

# Define output directories
DESTDIR = release
OBJECTS_DIR = release/obj
CUDA_OBJECTS_DIR = release/cuda

# Sourcefiles
SOURCES += main.cpp

# This makes the .cu files appear in your project
OTHER_FILES +=  vectorAddition.cu

# CUDA settings <-- may change depending on your system
CUDA_SOURCES += vectorAddition.cu

CUDA_SDK = "C:/Cuda/CudaSamples"   # Path to cuda SDK install
CUDA_DIR = "C:/Cuda/CudaToolkit"            # Path to cuda toolkit install
SYSTEM_NAME = Win32         # Depending on your system either 'Win32', 'x64', or 'Win64'
SYSTEM_TYPE = 32            # '32' or '64', depending on your system
CUDA_ARCH = sm_11           # Type of CUDA architecture, for example 'compute_10', 'compute_11', 'sm_10'
TEMP = 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin' #tried to add VS compiler path, seems woring. When i changed it to higher version error appeared
VS = $$join(TEMP,'" -ccbin "','-ccbin "','"') #joing path to VS compiler with 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 to add VS runtime libraries, after that some errors disappeared, and some new emerged so i guess it worked
QMAKE_LIBS += -lmsvcrt -llibcmt -llibcpmt #after adding VS runtime to QMAKE_LIBDIR this line seems to have no effect
# Add the necessary libraries
LIBS += -lcuda -lcudart
#LIBS += -lmsvcr100
QMAKE_CFLAGS_RELEASE += -v
MSVCRT_LINK_FLAG_DEBUG   = "/MTd"
MSVCRT_LINK_FLAG_RELEASE = "/MT"

# The following makes sure all path names (which often include spaces) are put between quotation marks
CUDA_INC = $$join(INCLUDEPATH,'" -I"','-I"','"')
#this was nested in CONFIG (see link above) but i dont think it 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 is command for some extra output during cuda compiling (nvvc). -Xcompiler, honesly i have no idea what "/wd4819,/EHsc,/W3,/nologo,/O2,/Zi" \ means,i copied those from some chinese webpage and again some errors went away
    cuda.dependency_type = TYPE_C
    QMAKE_EXTRA_COMPILERS += cuda

HEADERS += \
    vectorAddition.h #empty header, i was just trying something.

这是编译器输出:

13:09:17: Running steps for 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
Could 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
Could 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
Could Not Find F:\workspaceSchool\build-Cuda-Desktop_Qt_5_1_1_MinGW_32bit-Release\release\cuda\vectorAddition_cuda.o
Could 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: The 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: The 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__' for '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 from C:\Cuda\CudaToolkit\include/device_types.h:53:0,
                 from C:\Cuda\CudaToolkit\include/builtin_types.h:56,
                 from ..\Cuda\main.cpp:2:
C:\Cuda\CudaToolkit\include/host_defines.h:79:0: warning: "__cdecl" redefined [enabled by default]
 #define __cdecl
 ^
..\Cuda\main.cpp:1:0: note: this is the location of the previous definition
 #include <cuda.h>
 ^
In file included from C:\Cuda\CudaToolkit\include/builtin_types.h:60:0,
                 from ..\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 to `_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 to `_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 to `_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 for 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 for target 'release' failed
mingw32-make[1]: *** [release\Cuda.exe] Error 1
mingw32-make: *** [release] Error 2
13:09:28: The process "F:\Programs\Qt5.1.1\Tools\mingw48_32\bin\mingw32-make.exe" exited with 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.

以及所有问题(由于低代表而无法发布图像):issues https://i.stack.imgur.com/2KRAw.png

如果我没有弄错的话,那么问题出在链接 cuda 目标文件(vectorAddition_cuda.o)上,该文件是由nvvc.exe with cl.exe以及 VS 库。然后MinGW(g++编译器)正在尝试以某种方式将 cuda 目标文件和 c++ 目标文件(main.o)与所有库链接到可执行文件中。然而,g++ 不知道 VS 运行时库并抛出这些错误。所以我想我需要以某种方式将 VS 库传递给 g++。 我怎样才能解决这个问题?


我有点困惑,你用的是MinGW还是Visual?标题似乎表明您正在使用 MinGW,但项目文件似乎混合使用了两者。你不能混合这两者。如果您使用 Visual Studio 2010 编译(或直接从 NVidia 下载二进制文件)CUDA,则必须使用 VS10 来编译您的项目,否则它将无法工作。

我自己从未使用过 CUDA,但似乎系统要求 http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-microsoft-windows/index.html仅提及 Visual Studio 2008、2010 和 2012。如果您想将其与 Qt 一起使用,这是可能的,您只需获取使用 VS 编译的 Qt(在下载页面 http://qt-project.org/downloads。您可以获得 Visual Studio Expressfor free http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#DownloadFamilies_2只要您不使用它创建任何商业应用程序。

要将 QtCreator 与 MSVC 后端编译器一起使用,请转到“工具”>“选项”>“构建和运行”>“套件”,然后添加一个带有 MSVC 编译器的新套件、cdb 作为调试器以及您刚刚下载的 Qt 版本(必须使用相同的 Visual Studio 进行编译) Studio 版本,否则将无法工作)。然后打开您的项目,转到“项目”选项卡(左侧)并选择您刚刚创建的套件。在一切顺利之前,您可能还应该清理您的 .pro 文件。

顺便说一句,您的链接器行中似乎有一些不合适的地方:

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 

首先这个-L+=,这可能是由末尾的转义反斜杠引起的QMAKE_LIBDIR.

然后是语法-L-lmsvcrt似乎是错误的。可能是因为您正在使用QMAKE_LIBS,我个人从未使用过它,并且根据文档 http://qt-project.org/doc/qt-4.8/qmake-variable-reference.html#qmake-libs你也不应该这样做,因为它是一个内部变量。同样适用于QMAKE_LIBDIR http://qt-project.org/doc/qt-4.8/qmake-variable-reference.html#qmake-libdir顺便提一句。我只想用LIBS任何外部依赖项的变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 QTCreator 中使用 MinGW 编译 c++ 和 cuda 代码 的相关文章

  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 为什么在 CUDA 中启动 32 倍数的线程?

    我参加了 CUDA 并行编程课程 并且看到了许多 CUDA 线程配置的示例 其中通常将所需的线程数四舍五入到最接近的 32 倍数 我知道线程被分组为 warp 并且如果您启动 1000 个线程 GPU 无论如何都会将其四舍五入到 1024
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • 无法访问127.0.0.1

    我不知道这种情况何时开始发生 但结果是 127 0 0 1 无法在任何地方的任何端口上工作 例如 浏览器显示无法连接 以下是我的研究结果 localhost COMPUTER NAME 和实际 IP 地址都工作正常 我的主机文件中没有什么特
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler

随机推荐

  • XSLT 1.0 中的增量计数器

    这是输入 XML
  • 在 WebStorm IDE 中更改代码字体大小

    我似乎找不到更改 WebStorm 中代码字体大小的方法 我更改了选项中的字体大小 它更改了菜单和工具栏字体大小 但没有更改实际代码 有任何想法吗 Settings Preferences在 Mac 上 Editor Colors Font
  • 在 F# 中计算序列后续元素的差异

    我在 F 中有一个浮点数序列 我需要获取一个定义为 Math Log currentElement Math Log previousElement 显然它会比原始序列短一个元素 在 F 中实现此目的最优雅的方法是什么 我正在考虑使用内部带
  • 为什么我们需要“cacheRedirects”?

    我阅读了文档与缓存数据交互 https www apollographql com docs react caching cache interaction cache redirects with cacheredirects虽然我明白如
  • 在 Java 中如何将 double 类型转换为 int 类型?

    我正在看http docs oracle com javase 6 docs api java lang Double html http docs oracle com javase 6 docs api java lang Double
  • .NET - ClickOnce Install - 公司名称和应用程序名称

    在 ClickOnce 应用程序中设置公司名称和应用程序名称的正确方法是什么 我在名为 RecordNavigator 的解决方案中有一组项目 GUI 项目称为 RecordNavigator Gui 当我发布应用程序时 我希望 开始 菜单
  • 在 C# 中使用 WinSCard API 读/写 SLE4442 存储卡

    一些背景信息 为了读取 写入 SLE4442 存储卡 我的应用程序当前使用 Omnikey Cardman 3021 USB 读卡器 这是一个 Sumbsembly 智能卡 API 外部 dll 它能够包装 CT API 调用 定向到 om
  • 防止在移动 Safari (iPad / iPhone) 中长按/长按时出现默认上下文菜单

    对于网站 我想在用户 长按 屏幕时显示自定义上下文菜单 我创建了一个jQuery 长按 https github com pisi Longclick我的代码中的侦听器以显示自定义上下文菜单 显示上下文菜单 但也显示 iPad 的默认上下文
  • ABP.IO - Blazor WebAssembly - 租户特定登录

    我在我的项目中使用 ABP IO Blazor 模板 尝试构建一个简单的多租户门户 我遇到的问题是试图避免最终用户在登录屏幕上选择特定租户 使用此页面作为我的参考 https docs abp io en abp latest 多租户 ht
  • SVN 使用通配符删除?

    我正在将 VSS 存储库迁移到 SVN 并在第一次签入时无意中包含了所有 vti cnf scc 文件 我想从 SVN 中删除这些 当然不是永久的 只是在头脑中 相关应用程序非常大 逐个文件夹查找和删除这些文件将花费很长时间 建议 一定有一
  • 将 JSON 字符串中的数据叠加到现有对象实例

    我想反序列化一个 JSON 字符串 该字符串不一定包含每个成员的数据 例如 public class MyStructure public string Field1 public string Field2 假设我有一个实例 Field1
  • 部分屏幕截图和图像质量损失

    我正在打印相机胶卷 电子邮件 短信 FB Twitter 等的部分屏幕截图 选择了部分屏幕 从顶部开始 100 像素 从底部开始 100 像素 我使用了以下代码 let top CGFloat 100 let bottom CGFloat
  • 使用 NSUserDefaults 存储 UISwitch 状态

    我正在努力坚持UISwitch在我的应用程序的设置视图中说明 基本上它是一个UITableView并包含一些开关来获取用户首选项 下面的代码解释了开关的构造方式 下面只给出了一种开关构造 其他的也以同样的方式构造 if cell nil c
  • 在 Xcode 4.3.1 中使用 libc++ 时如何获得合理的变量显示?

    我使用 Xcode 4 3 1 的 C 11 语言方言以及 libc 作为标准库 这种组合的语言支持令人惊叹 但调试却是一种折磨 Xcode 的 摘要格式 和 lldb 的摘要格式功能都不会以漂亮的打印方式显示任何标准类型 std stri
  • 除了以 /api 开头的路由之外,为所有路由运行快速中间件?

    我有一个 Express 中间件 可以像这样在服务器上渲染 React 放置在所有其他路由之后的末尾 app use function req res Router run routes req path function Handler
  • Android、NSD/DNS-SD:NsdManager 不可靠的发现和 IP 解析

    在过去的几周里 Android 的 NSD 实现让我抓狂 从用户的角度来看 会出现以下问题 设备以完全不确定的方式发现彼此 如果我启动我的NsdManager基于应用程序 如果只涉及两个设备 它或多或少可以工作 如果第三个设备加入 它很少会
  • AngularJS 多页面应用程序网站样板网站结构建议

    我正在寻找一些有关创建由 Laravel 后端服务的 AngularJs 多页面应用程序的指导 网上的所有 Web 应用程序教程都指向创建 SPA 而我刚刚开始使用 Angular 所以请对我放轻松 产品页面示例 http example
  • 在 python 和 swift 之间交换加密消息

    我需要一个 python 代码和一个 swift 代码交换加密消息 这是我尝试过的 Fernet 在审查了这些选项之后 我认为对称密钥算法效果很好 在 python 中 像往常一样 它是加密和解密简单 https cryptography
  • 将解决方案转换为 pdf 或 doc 文件

    这似乎是一个奇怪的问题 但我需要将我的代码转换为 pdf 这样我就可以将其提交 是的 遗憾的是学校系统要求将 CD 上的代码作为 pdf 格式 我能做的就是打开解决方案中的每个类并复制粘贴它 但是 作为一名程序员 我很懒 想知道 Visua
  • 在 QTCreator 中使用 MinGW 编译 c++ 和 cuda 代码

    我正在尝试编译简单的cuda程序 我从在 Windows 上的 Qt Creator 中编译 Cuda 代码 https stackoverflow com questions 12266264 compiling cuda code in