我只是想將一個整數列表傳遞給用C++編寫的函數。我建立了模板文件(.tm)和全部文件,並且我可以成功地調用帶有標量參數的測試函數。使用list參數調用該函數的行爲就好像該函數根本沒有定義。我懷疑參數類型不匹配。從Mathematica傳遞列表到C++(Mathlink)
在模板文檔(http://reference.wolfram.com/mathematica/ref/file/file.tm.html)中,列表的數據類型與「Int32List」類似。當我使用它時,我的C++函數必須爲列表長度包含一個額外的長參數。使用列表的唯一示例代碼是「sumalist.tm」。這個例子使用IntegerList(一種不出現在doku中的類型)。
當我使用Int32List時,mprep結果需要一個具有額外整數參數的函數(不會像在doku中寫入那樣長)。當我使用未記錄的IntegerList類型時,額外的參數是long類型的。
在我對標量類型進行實驗期間,我遇到了類似的問題 - 在tm文件中使用「Integer」並且沒有使用「Integer32」識別C++函數。
「sumalist.tm」示例還使用了一個奇怪的Pattern(列表:{___ Integer}),關於它我找不到任何文檔。我還想了解Evaluate行的含義(我懷疑它的使用使得函數可以在列表中沒有大括號的情況下調用)。
那麼誰知道哪些數據類型真的適合用列表調用C++函數 - 也許還有實數...?
非常感謝這個解釋 - 它清除了很多東西。 – Batox 2012-04-15 13:40:30