我正在开发一个跨平台的项目,在OS X上,其中一部分必须使用clang/llvm构建,因为它创建了一个Cocoa窗口,而项目的其余部分则使用GCC构建。这被编译成一个静态库,然后链接到主可执行文件中。例如:
//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;
}
我正在使用CMake生成一个makefile。我尝试了几组不同的编译器标志-fPIC
等,但是我打印出来的值是1835455280、1746993968、1648001840。这两个编译器不应该是二进制兼容的吗?如果我将函数设置为void,那么它就可以正常工作。