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

在把Ogre3d 编译到 Android 平台时,使用 NDK 编译,但是一直有一处错误提示:

C 代码调用 C++ 变量、函数提示未定义_第1张图片

文章来自博客 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

编译出错

C 代码调用 C++ 变量、函数提示未定义_第2张图片

文章来自博客 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

你可能感兴趣的:(C++)