如何使用Python解决C++/C编译过程中的“冲突类型”错误设置.py构建`?

2024-10-16 22:24:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将COLLADA DOM库作为一个外部依赖项包含到我正在开发的程序(PyMOL)中,最终目标是支持以COLLADA(.dae)格式导出三维场景。我能够成功地编译所有的东西,直到我将#include <Collada14Dom/dae.h>添加到相关的源文件;也就是说,如果我注释掉那一行,一切都会构建得很好。我正在开发一款运行10.8.5和Xcode5的Mac电脑。在

到目前为止,我已经从Sourceforge安装了COLLADA DOM v2.2,通过make(在'DOM'子目录中)构建了DOM,并将框架安装到/Library/Frameworks/Collada14Dom.框架通过make install。在

我还下载了Boost v1.55.0,并通过./bootstrap./b2./b2 install安装,如here所示。在

当我在我的COLLADA.cpp文件中添加以下行之后进行编译时,问题就出现了。在

#include <Collada14Dom/dae.h>

编译后,我得到一系列“冲突类型”错误:

^{pr2}$ 显然,GCC对C++标题有一些问题,但我不确定如何解决这个问题。在

一个重要的考虑是,在项目代码库中没有其他C++代码。(没有基于C语言的COLLADA库,我真的不想在这里重新发明轮子。)所以似乎有一些配置需要发生——一些设置设置.py也许吧。有什么方法可以告诉setup.py使用GCC以外的东西进行编译吗?在

不管怎样,我可以用以下方法完全重现这个问题(在安装COLLADA DOM和Boost之后):

在sscce.cpp公司公司名称:

#ifdef __cplusplus
extern "C" {
#endif

#include <Collada14Dom/dae.h>

int main(){
    return 0
}

#ifdef __cplusplus
}  // END extern "C"
#endif

如果我试图使用gcc sscce.cpp进行构建,则会产生与完整程序相同的“冲突类型”错误。奇怪的是(无论如何,对我来说),我也会使用g++ sscce.cpp得到相同的错误,所以我想这可能不是严格意义上的GCC问题。在

我错过了什么?希望有人以前见过这种情况,而且您实际上不必安装colladadom和Boost来提供建议,因为这两个库都需要一些时间来构建。一如既往,任何帮助都将不胜感激。在

谢谢!在


Tags: install程序框架makeinclude错误pluscpp
1条回答
网友
1楼 · 发布于 2024-10-16 22:24:45

Functions in this C++ file needs to be callable by other C code in the project, so I was under the impression I needed to enclose the C++ code in extern "C" blocks to avoid name mangling. Is that not the case?

^ {CD1>}块允许C声明嵌入C++代码中,而您希望相反;没有提供任何条款。

相关问题 更多 >