Android NDK での .cppファイルと.hファイル

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
black_cat

Android NDK での .cppファイルと.hファイル

#1

投稿記事 by black_cat » 8年前

こんにちは。
最近OpenGL ESを使用したAndroid向けゲームアプリを作成しているのですが、速度の面などからNDKを使ってみたいと思い、あれこれ調べつつ見様見真似でコードを書いてみました。
が、やはりC/C++を使ったことがない私にとってはいろいろと厳しいものがありまして、現在.hファイルと.cppファイルを分けようとしているのですが、エラーが出て前に進みません。
どこに問題があるのかをどなたかご教授していただけませんでしょうか?

開発環境はEclipse 4.2 Juno + CDTで、こちら↓を参考にして環境を整えました。
ttp://d.hatena.ne.jp/orangesignal/20120817/1345169256

以下ソースコードとエラーです。

■MainActivity.java

コード:

package com.example.testN;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {
	static {
		System.loadLibrary("test");
	}
	public native void testFunc();	//ネイティブの関数

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        testFunc();
    }
}
■test.cpp (エラー:undefined reference to `A()')

コード:

#include <jni.h>
#include "TestC.h"

extern "C" {
	JNIEXPORT void JNICALL Java_com_example_testN_MainActivity_testFunc(JNIEnv* env);
};
JNIEXPORT void JNICALL Java_com_example_testN_MainActivity_testFunc(JNIEnv* env)
{
	bool b = A();	//A()の呼び出し。 ここでエラー undefined reference to `A()' が出ます
}
■testC.h

コード:

bool A();	//A()のプロトタイプ宣言
■testC.cpp

コード:

#include "TestC.h"

//A()の実装
bool A(){
	return true;
}
よろしくお願いいたします。

アバター
lriki
記事: 88
登録日時: 9年前

Re: Android NDK での .cppファイルと.hファイル

#2

投稿記事 by lriki » 8年前

■testC.cpp が Android.mk に追加されているか確認してみてください。

black_cat

Re: Android NDK での .cppファイルと.hファイル

#3

投稿記事 by black_cat » 8年前

確認してみると追加していませんでした。
追加すると意図した通りに動作させることができました!
アドバイスありがとうございました!!

閉鎖

“C言語何でも質問掲示板” へ戻る