2012-06-08 76 views
2

我已經在c#中導入了C++本機dll方法。下面是C++方法怎麼看char指針參數值沒有得到更新時,我得到的答覆從我的c + + dll回到c#

extern "C" declspec(dllexport) int __stdcall temp(char *value) 
{ 
    value="hksdhfs"; 
    return 1; 
} 

這個我在C#中如何導入

[DllImport("check.dll", CallingConvention = CallingConvention.StdCall, ExactSpelling = true, EntryPoint = "temp")] 
    public static extern int temp(string value); 

問題是,我能夠「價值」字符指針發送數據深入到C++ DLL,但是當我在c#中得到「value」字符指針時,值沒有被改變。任何人都可以幫忙。

+1

先從C++開始這項工作。複製字符串需要strcpy()。 –

+0

如果我只是直接將數據提供給變量,則strcpy()不是必需的。 – krishna555

回答

0

作爲參數沒有在這種情況下工作,所以我改變了C DLL方法++返回類型像下面並獲得該串中的寫入格式

extern "C" declspec(dllexport) char* __stdcall temp(char *value) 
{ 
    value="hksdhfs"; 
    return value; 
} 

和DLL進口是這樣

[DllImport("check.dll", CallingConvention = CallingConvention.StdCall, ExactSpelling = true, EntryPoint = "temp")] 
[return:MarshalAs(UnmanagedType.LPStr)] 
public static extern string temp(string value); 

做strcpy()也將工作,但如果我使用類這個指針字符值被傳遞,它將無法正常工作,所以我更喜歡上述方式,那工作......感謝每一個。