小编Kos*_*tis的帖子

iOS7中通过JavaScriptCore的HTTP请求

我正在尝试使用iOS7新功能之一JavaScriptCore Framework.我可以从Javascript成功输出一个helloWorld字符串,但我感兴趣的是,在Javascript中进行HTTP POST,然后将响应传递给Objective-C.不幸的是,当我XMLHttpRequest在Javascript中创建一个对象时,我得到了EXC_BAD_ACCESS (code=1, address=....).

这是Javascript代码(hello.js):

var sendSamplePost = function () {
    // when the following line is commented, everything works,
    // if not, I get EXC_BAD_ACCESS (code=1, address=....)
    var xmlHttp = new XMLHttpRequest();
};

var sayHello = function (name) {
    return "Hello " + name + " from Javascript";
};
Run Code Online (Sandbox Code Playgroud)

这是我里面的Objective-C代码ViewController:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    JSContext *context …
Run Code Online (Sandbox Code Playgroud)

objective-c httprequest ios javascriptcore

7
推荐指数
2
解决办法
3677
查看次数

通过JNI将我的Java API扩展到C++:如何包装返回String的方法?

我正在使用JNI在Java中扩展我的API,以便通过C++访问它(我正在创建包装类).我在Java方面很有经验,但对C++来说却是新手.

现在,我在C++中为Java函数getString()创建一个包装器,它返回一个String.我正在使用GetStringUTFChars从Java String获取C字符串,但我不知道在哪里使用释放C字符串的ReleaseStringUTFChars.这是我的代码(aClass和aClassInstance是包装类中的私有日期成员):

const char* getString() {
jmethodID methodID = env->GetMethodID(aClass,
        "methodName",
        "()Ljava/lang/String;");
if (methodID == NULL) {
    cout << "--methodID = NULL";
    exit(0);
}
jstring jstringResult = (jstring) env->CallObjectMethod(aClassInstance, methodID);
const char* result = env->GetStringUTFChars(jstringResult, NULL);
// env->ReleaseStringUTFChars(jstringResult, result); 
return result;
}
Run Code Online (Sandbox Code Playgroud)

如果我删除//并使用ReleaseStringUTFChars,结果将被释放,我将无法再返回它,对吧?我应该在释放之前将结果复制到另一个char数组吗?

谢谢,欢迎任何帮助!

ķ

c++ java java-native-interface

2
推荐指数
1
解决办法
2419
查看次数

运行使用MinGW构建的可执行文件时,错过msvcr100.dll错误

我正在成功编译(使用MinGW)并运行我的C++程序(通过JNI调用Java类),该程序由Win7-64bit系统上的多个文件组成.编译和运行由2个批处理文件完成.我不久前安装了Visual Studio C++ 2010,但从那以后就没用过它.

我现在正在尝试将此程序部署到另一台运行WinXP-32bit的计算机上,并且我面临"缺少msvcr100.dll"错误.我安装了最新的MinGW和JDK,我使用相同的批处理文件编译了我的程序,但是当我运行它时,我收到错误.Visual Studio没有在建筑的任何部分使用(我不希望它),所以我觉得很奇怪,我收到有关MSVC++ DLL的消息.

的compile.bat

rem Set the include paths for the JNI header files("include" and "include\win32" inside the jdk (32-bit) directory).
set JDK_INCLUDE="C:\Program Files\Java\jdk1.7.0\include"
set JDK_INCLUDE_WIN32="C:\Program Files\Java\jdk1.7.0\include\win32"

set PATH=%PATH%;C:\MinGW\bin

rem Build an import library for the jvm.dll from the .\lib\jvm.def file (see http://www.inonit.com/cygwin/jni/invocationApi/archive.html)
dlltool --input-def .\lib\jvm.def --kill-at --dllname jvm.dll --output-lib .\lib\libjvm.dll.a

rem Set the import library directory.
set JVM_IMPORT_DLL=".\lib"

rem Compile all files (including the IngToolTest.cpp) and create an executable file .\bin\COFORM_JNI.exe
g++ -I%JDK_INCLUDE% -I%JDK_INCLUDE_WIN32% .\src\DataTypes\file1.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ java-native-interface mingw

0
推荐指数
1
解决办法
4102
查看次数