【发布时间】:2016-04-05 16:15:17
【问题描述】:
你能告诉我这段代码有什么问题吗?关于如何修复的任何想法?
JNIEXPORT jstring JNICALL Java_COM_DEMO_TEST_SEND (JNIEnv
*env, jclass c, jstring param){
const char* strParam = env->GetStringUTFChars(param, 0);
UString data = s2ws(string(strParam));
UString result = TEST::SEND(data);
return env->NewStringUTF(ws2s(result).c_str());
}
我收到以下错误。
error: conversion from ‘std::wstring {aka std::basic_string<wchar_t>}’ to non-scalar type ‘UString {aka std::basic_string<char>}’ requested
UString data = s2ws(string(strParam));
【问题讨论】:
-
#ifdef WIN32 typedef std::wstring UString; #else typedef std::string UString; #endif -
然后你编译你的代码没有设置
WIN32,检查你的项目设置。 -
我在 Linux 上编译它,就像这样
g++ -Wall -g -c -I /usr/lib/jvm/java-8-oracle/include -I /usr/lib/jvm/java-8-oracle/include/linux BridgePosAPI.cpp -o BridgePosAPI.o -std=c++11 -
如果它在 linux 中,Ustring 应该是什么?
-
您是否为 windows 目标进行交叉编译?否则我会忽略 Windows 特定的东西。