我想在C++
项目中使用我的学校自定义库但是库链接似乎不起作用...当我在C
中创建我的程序并尝试编译它时,它可以工作。 ..
自己看:
我认为Mlx的X11和/或Xext库依赖性是有原因的,可能有一些
#if __cplusplus
void *x11_mlx_function_wanted(void);
#endif
我已经检查了mlx是否包含了一些这样的支票而我什么都没看到。
提前谢谢
修改
我在objective-c中取得了成功。
答案 0 :(得分:1)
问题是C ++名称错误。如果在C11中声明一个函数,它最终会出现一个“受损”的名称,该名称会对命名空间和参数类型进行编码。这是必要的,因为在C ++中,相同的函数名称可能存在各种重载。重载是独立的功能;他们甚至不必在同一个对象库中。
在对象库本身中,函数将具有普通的C名称。但由于头文件是用C ++编译器处理的,因此声明的函数将被命名为C ++函数。
一种可能的解决方案可能是将所有包含的函数声明为C函数:
extern "C" {
#include "/usr/X11/include/mlx.h"
}