我正在使用CUDA(VC++,Visual studio 2008sp1)来调试FEM程序.由于cuda的不足,该程序只能在Win32平台上运行.我认为链接的库文件都是在x86平台上编译的,但是当我编译它时,我收到错误消息"致命错误LNK1112:模块机器类型'x64'与目标机器类型'X86'冲突".
我试图将平台转换为x64,但它没有用.请告诉我:什么是"模块机器类型"什么是"目标机器类型"?我怎么能克服它?
我正在尝试使用 OpenMP 运行一个简单的项目。由于Visual Studio仅支持OpenMP 2,因此我尝试使用Visual Studio 2019自带的LLVM clang-cl编译并运行该项目。编译部分似乎没问题,但在链接阶段,链接器无法解析OMP函数。
这是我的代码,只有 1 个文件:
#include <stdio.h>
void fn() {
#pragma omp parallel num_threads(5)
{
int i;
#pragma omp task depend(in : i)
for (i = 0; i < 1; i++) {
printf("task\n");
}
}
}
int main() {
printf("hello\n");
fn();
}
Run Code Online (Sandbox Code Playgroud)
我的 Visual Studio 项目属性:
Windows SDK version:10.0(最新安装版本)(10.0.18362.0)Platform toolset: LLVM (clang-cl)C/c++ - Command Line - Additional Options:/Zc:twoPhase- -Xclang -fopenmp -vLinker - Additional Dependencies:C:\Program Files …我尝试让clang 5.0.0适用于Visual Studio 2015,因为我需要OpenMP 3.0功能。我安装了clang编译器(不是没有任何openmp支持的vs2015版本)并使用cmake:
cmake_minimum_required(VERSION 2.8.10)
project(myproject)
find_package(OpenMP)
if (OPENMP_FOUND)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
include_directories("include")
add_library(libFoo STATIC Foo.cpp)
install(TARGETS Foo libFoo LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试配置MSVC 14 2015 Win64带有或不带有工具链的构建时,LLVM-vs2014总是出现错误,找不到OpenMP:
The C compiler identification is Clang 5.0.0
The CXX compiler identification is Clang 5.0.0
Check for working C compiler: D:/Program Files/LLVM/msbuild-bin/cl.exe
Check for working C compiler: D:/Program Files/LLVM/msbuild-bin/cl.exe -- works
Detecting C compiler ABI info
Detecting C compiler ABI …Run Code Online (Sandbox Code Playgroud)