我有某种库,我正在为其编写包装器,然后我尝试在其上生成 SWIG 包装器,以便我可以直接从 Java 进行调用。我遇到了一个无法调试的问题,因为基本上只有 0 条信息(Java 端)。这是我正在处理的。我有一个这样的自定义类:class APIClass {private:public: APIClass(); void mbstowcsTest();};它的实现看起来像这样typedef unsigned short AName[32];void APIClass::mbstowcsTest() { const char* source = "D:\\test3\\source\\test.txt"; AName tmp1; mbstowcs((wchar_t*)tmp1, source, 32 - 1);}使用这样的代码,我为它生成 SWIG 文件并使用批处理脚本编译代码,如下所示:@echo offcall "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64swig -c++ -java -outdir java api.iset CompilerFlags=-nologo -Zipushd buildcl %CompilerFlags% ..\api.cpp ..\api_wrap.cxx /I"C:\Program Files (x86)\Java\openjdk8u102-win_jdk\include"^ /I"C:\Program Files (x86)\Java\openjdk8u102-win_jdk\include\win32" /LD /EHscpopdCOPY .\build\api.dll .\java\至于 api.i 接口文件,它只是:%module api%{ #include "api.h"%}%include "api.h"基本上,如果我APIClass::mbstowcsTest()在 C++ 主函数中调用一切顺利,并且mbstowcs()没有任何问题,如下所示:APIClass *api = NULL;api = new APIClass();api->mbstowcsTest();在 Java 方面,我有:class main { public static void main(String[] args) { System.loadLibrary("api"); APIClass api = new APIClass(); api.mbstowcsTest(); }}Java 代码中的问题是,每当代码到达时mbstowcs(),APIClass::mbstowcsTest()我得到的都是像Process finished with exit code -1073740791 (0xC0000409). 谁能告诉我为什么这是一个问题?我尝试使用来自stdlib.hlike 的其他功能abs()并且它起作用了。
添加回答
举报
0/150
提交
取消