2012-07-10 45 views
-1

我想在C語言文件中有一個可以返回字符串作爲輸出的函數,我想從Managed Code即C#中訪問該函數,並將該字符串作爲返回值。任何與此相關的幫助或鏈接對我來說都很棒。調用C函數並獲取C#中的字符串輸出#

+2

在所有應有的尊重,你有沒有嘗試過在網上搜索它? – dasblinkenlight 2012-07-10 14:06:21

+0

雅我嘗試搜索它,但因爲我不擅長C語言,這就是爲什麼我不能創建一個返回字符串的C語言函數,我可以在C#中訪問該函數作爲輸出的函數 – Vikram 2012-07-10 14:15:17

回答

3

這是一個共同庫或自定義庫中的方法嗎?更常見的可以在pinvoke.net上找到。如果沒有,MSDN有Platform Invoking文章使用DllImport可能是有用的。

+0

感謝您的回覆。方法將在自定義庫中,有點看起來像 - void TEST(char optVal []) { \t }所以我想在我的C#代碼中獲取optVal。 – Vikram 2012-07-10 14:05:13

+0

@Vikram:一個'void'函數不會返回任何東西。你想要檢索的C庫中函數的簽名是什麼?我會基於此爲你寫一個導入。 – 2012-07-10 20:32:15

+0

該函數的簽名將像void Test(char * optVal) {}。請告訴我如何能夠在我的C#代碼中獲得optVal的價值。 – Vikram 2012-07-11 07:10:09

0

您將使用Platform Invoke來調用您的C函數。基本上,你將宣佈一個extern方法:

[DllImport("yourlibrary.dll")] 
static extern YourFunctionName(...) 

得到正確編組的語義是有點棘手,但這種data types頁面應該讓你開始。

+0

非常感謝回覆 – Vikram 2012-07-11 10:08:12