您的位置:首页 > 编程语言 > C语言/C++

C 代码调用 C++ 变量、函数提示未定义

2015-03-28 21:13 591 查看
在把Ogre3d 编译到 Android 平台时,使用 NDK 编译,但是一直有一处错误提示:



文章来自博客 http://blog.csdn.net/huutu  QQ:790621656

原因是从 Jni 文件夹中的 C 函数 调用 C++ 类成员变量或者成员函数。需要在C代码中再次声明才可以。

文章来自博客 http://blog.csdn.net/huutu  QQ:790621656

测试代码如下:

extern "C"
{
class OgreAndroidBridge
{
public:
static bool mInitFinish;
static bool mTest;

public:
static void init()
{
mTest=false;
mInitFinish=false;
}
};
}

int main()
{
OgreAndroidBridge::mTest=true;
return 0;
}


文章来自博客 http://blog.csdn.net/huutu  QQ:790621656

编译出错



文章来自博客 http://blog.csdn.net/huutu  QQ:790621656

在使用类成员变量之前做前置声明,就可以编译通过。文章来自博客 http://blog.csdn.net/huutu  QQ:790621656

extern "C"
{
class OgreAndroidBridge
{
public:
static bool mInitFinish;
static bool mTest;

public:
static void init()
{
mTest=false;
mInitFinish=false;
}
};
}

bool OgreAndroidBridge::mTest=false;

int main()
{
OgreAndroidBridge::mTest=true;
return 0;
}


文章来自博客 http://blog.csdn.net/huutu  QQ:790621656
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: