我正在 Linux 上构建 Java 应用程序并通过 JNI 调用 CPP 代码。当我将我的 CPP 对象与 libaws-cpp-sdk-core.so 链接时,我得到未解析的符号:
Aws::Utils::Json::JsonValue::JsonValue(std::__cxx11::basic_string, std::allocator > const&)
aws-spp-sdk-core.so 中的符号几乎匹配: T Aws::Utils::Json::JsonValue::JsonValue(std::__cxx11::basic_string, Aws::Allocator > const&)
除了它是 Aws::Allocator 而不是 std::allocator 所以我尝试同时传递 AWSD ::String 和 std::string 但没有帮助
问题 sysmbol 来自以下调用 AWS::Utils::Json::JsonValue() 的代码:
JNIEXPORT jstring JNICALL Java_CCBJNI_labToMix(JNIEnv * env, jobject thisObj, jstring jcolor) {
Aws::Utils::Json::JsonValue labjson;
Aws::Utils::Json::JsonView labview;
string line;
Aws::String const& aws_line(line);
labjson = Aws::Utils::Json::JsonValue(aws_line);
return NULL;
}
我已经在 Linux 上从源代码构建了 AWSSDK,并尝试在所有生成的 .so 库中进行链接,我已经安装了先决条件: $sudo apt-get install libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev libpulse-dev works在使用 nuget 包管理器的 Windows 上,其他 AWS 调用正在工作,但不是这个。
谢谢你的帮助