• error C2664: “LoadLibraryW”: 不能将参数 1 从“const char *”转换为“LPCWSTR”


    在使用VS2010编写运行时动态链接dll文件时出现的一个问题,问题解决得益于此文章:

    http://blog.sina.com.cn/s/blog_6a2236590100xbgl.html

    通过调用这个函数:
    LoadLibrary出现的该问题。
    原因 :工程只支持UNICODE字符
    解决方法:
    1、在解决方案资源管理器中的工程上右键属性->配置属性-->常规--->字符集---->使用多字节符字符集

    2、也就是宽字符,所以下面这行代码,应该编译有错误
    hinst=LoadLibrary("InTheHand.Net.Personal.dll");
    也就是:
    cannot convert parameter 1 from 'char [27]' to 'const unsigned short *'
    改为:
    hinst=LoadLibrary(L"InTheHand.Net.Personal.dll");
    或者
    hinst=LoadLibrary(_T("InTheHand.Net.Personal.dll"));

    ================================================================

    关于LPCWSTR的类型:

    LPCWSTR
    L 后面的P是一个长的指针(以前16位windows时有短的,现在都是长的)
    P 这是一个指针
    C 指向的是const型
    W 指向的是宽字符(unicode)
    STR 这是一个字符串
    windows编程中一般还是用LPCTSTR比较多,这是一个宏,编译器跟据_UNICODE参数,决定将他变成LPCSTR(ansi版)或者LPCWSTR(unicode版)

    如果遇到参数错误(cannot convert parameter * from 'const char [**]' to 'LPCWSTR'),可以考虑察看声明,如果有ASNI方式的只要在函数后面加个A就可以了,或者在定义参数时把char*改为WCHAR*。
    如果是混合使用的,那可以考虑转化,方法很多,比如使用TEXT()对字符串常量进行转化。
    在VS2005以后的版本中默认是使用Unicode的,所以会出现很多以前版本没有的编译错误(实参与形参类型不匹配)。

  • 相关阅读:
    2020系统综合实践 第1次实践作业
    软工实践个人总结
    2019 SDN大作业
    HDU 4965 Fast Matrix Calculation (矩阵快速幂取模----矩阵相乘满足结合律)
    HDU 1565 (最大流+黑白染色化二分图求最小割)
    HDU 4289 Control (最大流+拆点)
    HDU 3605 Escape(最大流+缩点转换)
    HDOJ4886(hash+枚举)
    POJ 2446 Chessboard (二分匹配)
    POJ 1469 COURSES (二分匹配,邻接表)
  • 原文地址:https://www.cnblogs.com/holyprince/p/4236586.html
Copyright © 2020-2023  润新知