我有一個庫提供,我知道使用C++。 我導入的DLL作爲這樣:
[DllImport("pst")] private static extern int pst_get_sensor(ref PSTSensor sensor);
的PSTSensor是一個結構,在C++例如,它被定義爲這樣:C#到C++數組?
struct PSTSensor
{
char name[80]; /**< Device name */
int id; /**< Device identifier (for other tracking interfaces */
float pose[16]; /**< Device pose estimate as row-major matrix */
double timestamp; /**< Time the data was recorded */
};
的問題是,即除了一個Int和一個雙,它採用了浮動,更重要的是一個數組。一個數組在C#和C++之間有些不同。當使用此結構調用pst_get_sensor(ref sensor);
時,運行代碼時整個開發環境會崩潰。
我現在做我的結構在C#這樣的:
struct PSTSensor{
public char[] name;
public int id;
public float[] pose;
public double timestamp;
}
我的問題是,如何創建一個數組,C++的理解,並正確返回?這甚至有可能嗎?
非常感謝提前, 笑臉
好吧,讓我們我試試這個。同時。我可能需要閱讀marchalling是什麼,以及unmanagedTypes是什麼(我不用C++編碼,所以這使得這難以理解) – Smileynator
此MSDN主題將有助於:http://msdn.microsoft。 com/en-us/library/s9ts558h(v = vs.110).aspx#cpcondefaultmarshalingforstringsanchor3 –
它的作品,真棒!我決定保留選擇線以備將來參考。感謝一百萬,三位老師不能讓我回答我的問題,我在其他方面看到了編組,但我沒有得到它的作用或如何實現。謝謝! – Smileynator