Windows/Visual Studioで頭が痛いものを見つけようとしています。私はOS X 10.6の下でJava実行可能ファイルを呼び出し、Xcodeの下でデバッグしたいコードを実行し、JNIライブラリ内の変数を調べ、ブレークポイントを設定したいと思っています。Xcode 4/OS X 10.6を使用したJNIコードのデバッグ
ここではJNIの実例コマンドラインからコンパイルして正常に動作します。誰かがXcodeでこれを設定する方法を教えてもらえれば、私は永遠に感謝しています。理想的には、Xcodeの最初から段階的な手順を開始し、適切な下のコードを切り貼りしてXcode 4でデバッグ可能なものを作成し、JNIコードにブレークポイントを設定して変数を調べることができます、スタックトレースなどを参照してください。
感謝の念として、あなたが私にペイパルのアドレスを与えると私が私の最後に再現できるような指示を私に与える最初の人に20ドルを送ります。
ありがとうございます!
HelloWorld.java
class HelloWorld {
public native String displayHelloWorld();
static {
System.loadLibrary("HelloWorldImp");
}
public static void main(String[] args) {
System.out.println("--> "+new HelloWorld().displayHelloWorld());
}
}
HelloWorldImp.mm
#include <stdio.h>
#include <jni.h>
#include <string>
#import <Foundation/Foundation.h>
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jstring JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString* name = @"Yo Cocoa";
std::string s = [name UTF8String];
jstring ret = env->NewStringUTF(s.c_str());
[pool drain];
return ret;
}
#ifdef __cplusplus
}
#endif
buildjni.sh
gcc -bundle -I/System/Library/Frameworks/JavaVM.framework/Headers -lstdc++ -o libHelloWorldImp.jnilib -framework Foundation HelloWorldImp.mm
誰もこれにジャンプしないので、自分で解決策を見つけてここに投稿するとすぐに$ 20オファーが切れると付け加えます。 :) – membar