【发布时间】:2011-07-02 20:58:04
【问题描述】:
我一直在努力找出 Windows / Visual Studio 中的脑死问题。我在 OS X 10.6 下有一个 JNI 库,我想用 Java 可执行文件调用它并在 Xcode 下调试:单步执行代码、检查 JNI 库中的变量、设置断点等。
这是一个有效的 JNI 示例,它可以从命令行正常编译和运行。如果有人能告诉我如何在 Xcode 中进行设置,我将不胜感激。理想情况下,我希望在 Xcode 中从头开始逐步说明,并根据需要从下面的代码中剪切和粘贴,从而产生可在 Xcode 4 下调试的内容,并允许我在 JNI 代码中设置断点,检查变量,查看堆栈跟踪等。
为了表示感谢,我将向第一个给我这样的指示的人发送 20 美元,如果你给我一个 Paypal 地址,我可以在我的末端复制。
提前致谢!
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 美元的报价就会到期。 :)
标签: java xcode macos objective-c++