[英]JNA invalid memory access
我在包装大 dll 之前测试 JNA。 具有不同类型 args 的基本功能有效。 但是当我们包装(甚至是简单的)批准的代码,其中包含标准方法mbstowcs_s 时,出现:
Exception in thread "main" java.lang.Error: Invalid memory access
at com.sun.jna.Native.invokePointer(Native Method)
at com.sun.jna.Function.invokePointer(Function.java:490)
at com.sun.jna.Function.invokeString(Function.java:654)
at com.sun.jna.Function.invoke(Function.java:427)
at com.sun.jna.Function.invoke(Function.java:354)
at com.sun.jna.Library$Handler.invoke(Library.java:244)
at com.sun.proxy.$Proxy0.TestWCHAR_in(Unknown Source)
at gov.nbu.App.main(App.java:85)
所有版本 32 位。
问题不在 JNA 中。 它出现在某些机器上的 Cpp 端(我的情况)。 这是:
void TestVoid(void)
{
wchar_t wcBuffer[2600] = {};
size_t szOut = 0;
std::string Path = "This message for test WCHAR.";
errno_t errCode = 0;
// Work:
errCode = mbstowcs_s(&szOut, wcBuffer, sizeof(wcBuffer), (char*)Path.c_str(), Path.size());
// Not work:
errCode = mbstowcs_s(&szOut, wcBuffer, Path.size(), (char*)Path.c_str(), Path.size());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.