的SWIG文檔解釋瞭如何的各種C輸入類型,像這樣:痛飲指針和Java數組
void spam1(Foo *x); // Pass by pointer
void spam2(Foo &x); // Pass by reference
void spam3(Foo x); // Pass by value
void spam4(Foo x[]); // Array of objects
...都會採取單一類型的參數在Java中,像這樣的:
Foo f = new Foo(); // Create a Foo
example.spam1(f); // Ok. Pointer
example.spam2(f); // Ok. Reference
example.spam3(f); // Ok. Value.
example.spam4(f); // Ok. Array (1 element)
同樣,在C返回類型:
Foo *spam5();
Foo &spam6();
Foo spam7();
...所有這三個功能將返回一個指向一些富對象將被分配給一個Java對象變量,最後一個需要分配一個值類型,Java垃圾回收將在發佈時處理。
但假設spam5()返回一個指向數組的指針。在Java中,我都用數組的語義來訪問單個元素,但我不認爲我可以做這個:
Foo foo[] = spam5();
我甚至不認爲編譯器會接受強制轉換爲(富[]),那麼這在SWIG中如何工作?
我已經把我的答案,例如它。抱歉,我無法提供更多幫助。 – 2009-10-13 21:43:29