우선 openCL에 비교적 익숙하고 C++에서는 좀 녹슬 었음을 말하는 것으로 시작하고 싶습니다. 또한 이것은 내가 질문을하는 첫 번째 시간이므로 나를 교정하거나 게시물에서 향상시킬 수있는 것을 지적하십시오.Visual Studio 10에서 OpenCL을 사용하는 C++/CLI
CLR Form 응용 프로그램에서로드하여 사용하는 혼합 모드 어셈블리 dll (CLR Library Project)을 만드는 프로젝트를 만드는 데 관심이 있습니다. DLL은 openCL 정적 라이브러리 C++ 헤더 파일 (원시 코드)을 가져오고이를 관리되는 래퍼 클래스를 사용하여 CLR에 표시합니다.
그러나 나는 계속 지나치지 않는 치명적인 오류 C1001의 함정에 빠져들고 있습니다. 나는 오픈 CL 1.2 사양과 AMD APP SDK의 V2.6, 비주얼 스튜디오 2010 얼티밋을 사용하고 SDK가 제공하는 헤더/lib에 연결하고
cl_int enqueueNativeKernel(
void (CL_CALLBACK *userFptr)(void *),
가리키는
1>C:\Program Files (x86)\AMD APP\include\cl\cl.hpp(1270): warning C4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
1>C:\Program Files (x86)\AMD APP\include\cl\cl.hpp(3708): fatal error C1001: An internal error has occurred in the compiler.
1>(compiler file 'msc1.cpp', line 1420)
1>To work around this problem, try simplifying or changing the program near the locations listed above.
1>Please choose the Technical Support command on the Visual C++
. 이론적으로 관리되지 않는 코드와 관리되지 않는에서 교차은 문제가되지해야 buut가 /의 CLR 컴파일 이후 나는 무서운 C1001 오류와 항상 관리되지 않는 통과 어쨌든
#pragma once
#pragma managed(push,off)
#define __NO_STD_STRING
#define __NO_STD_VECTOR
#include <cl\cl.hpp>
#pragma comment(lib,"OpenCL.lib")
#pragma managed(pop)
//rest of code
및 컴파일러를 나타 내기 위해 #pragmas 포함 크래시 (CL.exe는 c1xx.dll 때문에)와 내가 스위치를 가지고 노는 것에 상관없이 나는 손실에 처해있다.
스위치는/CLR,/MDd, 최적화 사용 안 함, 예외 처리를위한 EHa와 같습니다. #defines 나 wrapping 코드를 없애거나 #pragma를 제거하지 않습니다.
프로젝트는 C API (CL \ cl.h) 대신 포함되어 잘 컴파일된다는 점에 유의해야하며 그 대신 사용할 수 있습니다.
누구든지이 문제가 발생 했습니까? 아니면 내가 끔찍한 일을하고있는 것일까? 그 문제에 대한 정보를 정말 고맙게 생각한다.
당신이 시도해 볼 수있는 것은'/ clr'없이 컴파일 된 비 관리 코드에서 OpenCL을 사용하고 관리 코드와 링크시키는 것입니다. 가장 쉬운 방법은 관리되지 않는 코드가 포함 된 정적 라이브러리를 사용하는 것입니다. 프로젝트 종속성을 사용하여이를 관리되는 프로젝트로 가져옵니다. –
가능성이 있습니다 : [Visual Studio 2010 베타 2의 대상 .NET 3.5 C++/CLI] (http://stackoverflow.com/questions/2106163/target-net-3-5-c-cli-in-visual-studio- 2010-beta-2) 특히 프로젝트의 모든 임시 파일을 지우고 .NET Framework의 올바른 버전을 대상으로하고 있는지 확인하십시오. 참조 : [C1001 - VS2010의 C++/CLI 프로젝트의 컴파일러 충돌 (대상 프레임 워크가 3.5 인 경우)] (https://connect.microsoft.com/VisualStudio/feedback/details/560606/c1001-compiler-crash-on-c- cli-project-in-vs2010-when-target-framework-is-3-5) –
@CodyGray 나는 그것을 시도했지만 변화가 없었다. 그리고 나는 항상 net 4.0을 겨냥하고 있는지 확인했습니다. 문제는 쉽게 재현 될 수 있습니다. 제안을 주셔서 감사합니다 :) – phoenix