我的文档中写有用户名,IP和密码必须为const char*
,当我在const char
中放置变量时,我收到此错误消息。
这是我的代码:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;
typedef int (__cdecl *MYPROC)(LPWSTR);
int main()
{
HINSTANCE hinstDLL;
MYPROC ProcAdd;
hinstDLL = LoadLibrary("LmServerAPI.dll");
if(hinstDLL != NULL){
ProcAdd = (MYPROC) GetProcAddress(hinstDLL,"LmServer_Login");
if(ProcAdd != NULL){
const char* IP = "xxx.177.xxx.23";
const char* name = "username";
const char* pass = "password";
int port = 888;
ProcAdd(IP,port,name,pass);
system ("pause");
}
}
}
我收到了这个错误:
无法在参数传递
中转换const char*' to
WCHAR *'
我必须使用哪种变量用于这些参数以及如何使用?
答案 0 :(得分:12)
您最有可能使用其中一个Visual Studio编译器,Project Settings
中有一个Character set
选项。选择:
调用接受Unicode设置中的字符串的函数需要您创建Unicode字符串文字:
"hello"
类型为const char*
,而:
L"hello"
的类型为const wchar_t*
。因此,要么将配置更改为Not set
,要么将字符串文字更改为宽文字。
答案 1 :(得分:3)
对于文字,您希望在字符串中使用L
,如下所示:
L"My String"
如果您可以使用宽字符进行编译,那么您可能需要考虑使用_T()
宏:
_T("My String")
MS-Windows下的宽字符字符使用UTF-16格式。有关Unicode格式的更多信息,请查看Unicode website。
要动态转换字符串,您需要知道char *
字符串的格式。在大多数情况下,在Windows下它是Win1252,但最终并非总是如此。 Microsoft Windows支持许多8位格式,包括UTF-8和ISO-8859-1。
如果您信任区域设置,则可以使用mbstowc_s()
函数。
对于其他转化,您可能需要查看MultiByteToWideChar()
功能