我有一個令人沮喪的問題讓我花了很多時間處理它,但是我沒有找到任何解決方案。SWIG無法識別字符串參數
我想在SWIG中使用PHP中的C++類。我生成我的共享對象和它的一些方法,工作正常,但每當我打電話與字符串參數的方法作爲其輸入我得到這個錯誤:
Fatal error: Type error in argument 2 of
PKI_Buf_initHex
. ExpectedSWIGTYPE_p_std__string
PKI_Buf_initHex
是SWIG自動進行包裝類的名稱。在我的C++代碼,我宣佈initHex
方法:
int initHex(const string x)
{..}
我包含在我的接口文件typemaps.i
和std_string.i
,但我得到了同樣的錯誤消息。
如果有人能幫我解決這個問題,我真的很感激。
你必須在你的頭文件中有'using namespace std;'或'using std :: string;'。首先是非常糟糕的形式,對SWIG來說非常糟糕。後者是SWIG無法處理的。聲明你的函數爲'int initHex(const std :: string x)'(除此之外:爲什麼是'const'?你在這裏傳遞值) –
首先非常感謝你的幫助,我檢查了我的頭文件並且我使用了namespace std;所以我改變它「使用std :: string」,並將我的函數更改爲「int initHex(const std :: string x),但沒有任何改變。沒有實現我自己的代碼,我也沒有看到源代碼,我只有頭文件和目標文件,我必須在PHP中爲一些用法開發代碼。) – A23149577
其實我檢查了SWIG wrap.cpp文件對於我的代碼,我發現SWIG很好地識別了字符串類型: – A23149577