亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java SWIG 包裝器與直接函數調用

Java SWIG 包裝器與直接函數調用

手掌心 2021-10-27 10:18:19
我有某種庫,我正在為其編寫包裝器,然后我嘗試在其上生成 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()并且它起作用了。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號