這裏是一個非常簡單的C函數:SWIG:如何根據原始返回值對返回值進行鍵入映射?
bool GetSomething(string* result)
調用該函數後,返回的值應指示如果result
擁有所需要的信息,並且用戶可以檢查返回值相應地處理。
痛飲此功能在Python代碼中使用,我用的是默認的typemaps.i
文件,然後改變了功能
bool GetSomething(string* OUTPUT)
這工作,但仍然繁瑣。我不得不這樣做是爲了得到我想要的結果:
success, result = GetSomething()
if success:
# handle result
else:
# throw exception
理想情況下,我想有這樣的接口,而不是:
result = GetSomething()
if result:
# handle result
任何幫助,將不勝感激。
你爲什麼不拋出一個異常,如果函數失敗,所以你可以使用'string GetSomething()'。 – MasterMind 2014-09-04 15:20:47
@MasterMind這是一個免費的C++代碼庫,我不允許修改。 – yegle 2014-09-04 15:35:14
您不必在C++中拋出異常,就在SWIG包裝器中,因此它變成了Python異常。 – 2014-09-05 02:33:54