gpt4 book ai didi

c# - C++中字符串的L前缀

转载 作者:可可西里 更新时间:2023-11-01 18:18:04 26 4
gpt4 key购买 nike

我有一个静态库。该库定义了以下函数

int WriteData(LPTSTR s)

调用函数的示例是

LPTSTR s = (LPTSTR) L"Test Data";   
int n = WriteData(s);

WriteData 成功返回 0,失败返回 -1。

我正在编写一个动态 DLL 来导出此函数。

int TestFun(LPTSTR lpData)
{
return WriteData(lpData);
}

一个C++测试应用结果

LPTSTR s = (LPTSTR) L"Test Data";   
TestFun(s); //OK return 0

LPTSTR s = (LPTSTR) "Test Data";
TestFun(s); //Fail return -1

我必须从 C# 应用程序调用它。我假设我的 DLL 导入签名是:

        [DllImport("Test.dll")]
private static extern int TestFun(String s);

我的问题很简单如何从 .Net 调用它?如您所见,我可以控制

TestFun(LPTSTR lpData)

但无法控制

WriteData(LPTSTR s)

感谢大家的意见。到目前为止,我一直坚持类型转换。我认为当我能够从用户那里获取输入并写 2 行用于转换来代替下一行时,我的问题就会得到解决。

   LPTSTR s = (LPTSTR) L"Test Data"); //<= How can ii take input from user and 
TestFun(s); //OK return 0

最佳答案

L 前缀使字符串成为 wchar_t 字符串。您可以使用 Windows API 函数 MultiByteToWideChar 将 ANSI 字符串转换为 wchar_t 字符串。

关于c# - C++中字符串的L前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4086817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com