네이티브 코드를 사용해야하는 관리되는 C++/CLI 프로젝트가 있습니다. 기본 헤더 파일의 단순화 된 버전은 다음과 같습니다관리 코드에서 네이티브 함수 호출하기
struct structA
{
// Some variables...
};
struct structB
{
// Some similar variables...
void convertTo(structA& dest);
};
이 헤더는 관리 코드에 포함되어 있습니다. 관리되는 코드가 있습니다
structA sA;
structB sB;
// Load data into sB...
sB.convertTo(sA);
내가 비주얼 스튜디오 2008을 사용하고 /clr
으로 관리되는 코드를 컴파일하고있다. 이것은 암시 적 호출 규칙이 다르므로 물론 링커 오류 (LNK2028)를 생성합니다. 그러나 나는이 문제를 해결하기 위해 extern "C"
선언을 사용할 수 없었습니다 (또는 아마도 그것들을 잘못 사용하고 있습니다). 나는 비슷한 질문에 제공된 몇 가지 해결책을 시도했지만 아무 소용이 없었다.
관리되는 코드에서 관리되지 않는 함수를 올바르게 호출하려면 어떻게해야합니까? 여기에 어떤 선언이나 래퍼가 필요합니까?
실제로'/ clr'을 사용하여 컴파일 중입니다 ... – buzjwa
죄송합니다. 오류 도움말 페이지에있는 것 같습니다. –
.h 파일의 C 스타일 선언은'#pragma managed'와 같이 줄 바꿈되어야합니다. 컴파일러는 함수가 관리되는 코드가 아니라는 것을 알고 있습니다. 또는 함수 선언은 명시 적으로 호출 규칙을 지정해야하며, 항상 최선의 방법입니다. __stdcall 또는 __cdecl 특성을 사용하십시오. –