크로스 플랫폼 인 프로젝트에서 작업 중이며 OS X에서는 한 섹션이 clang/llvm으로 작성되어야합니다. 왜냐하면 코코아 창을 만들기 때문에 나머지 프로젝트는 GCC로 작성되기 때문입니다. 이것은 메인 실행 파일에 링크 된 정적 라이브러리로 컴파일됩니다. 예를 들어GCC와 LLVM의 호환성
//printnum.h
std::pair<uint32_t, uint32_t> printnum(int num);
//printnum.mm
#include "printnum.h"
#include <stdio.h>
std::pair<uint32_t, uint32_t> printnum(int num)
{
printf("%d\n", num);
//..... Objective C Code.....
}
//main.cpp
#include "printnum.h"
int main()
{
printnum(0);
return 0;
}
나는 makefile을 생성하기 위해 CMake를 사용하고 있습니다. 난 여러 가지 컴파일러 플래그 -fPIC
등의 다른 세트를 시도했지만 1835455280, 1746993968, 1648001840처럼 인쇄 값을 얻을. 두 컴파일러는 이진 호환해야하지 않아야합니까? 함수를 void로 만들면 잘 동작합니다.
저는 LLVM에 대해서는 몰라요.하지만 C++의 경우에도 다른 주요 버전의 GCC가 항상 바이너리 호환되는 것은 아닙니다. 나는 문제가 생기기 위해 잠시 돌아야한다고 생각한다. – ams
의 사운드는 버그를 좋아합니다. LLVM의 bugzilla에 문제 보고서를 제출하십시오. –