带有C 字符串的C#方法

Call C# method with string from c++

本文关键字:方法 字符串 带有      更新时间:2023-10-16

我知道之前已经问过类似的事情,但我只是无法工作。我在dll中有一个c#函数。

    public int setUser(string str){

我是从C 打电话的。我尝试了这样的事情。

    long lResult = 0; 
    PWSTR pw = L"hello";
    pICalc->setUser(pw, &lResult);

,但似乎这只是在空字符串或空值中发送。

什么是调用该方法并发送该方法将获得的字符串的最简单方法?

带有com,字符串被称为BSTR,这与零端端的C 字符串不同。在C 中制作BSTR的最简单方法是ATL的CCOMBSTR类:

pICalc->setUser(CComBSTR(L"hello"), &lResult);

否则,您可以使用sysallocstring/sysfreestring函数:

BSTR bstrString = ::SysAllocString(L"hello");
if (bstrString == NULL)
    // out of memory
pICalc->setUser(bstrString, &lResult);
::SysFreeString(bstrString);