zoukankan      html  css  js  c++  java
  • 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的,所以会出现很多以前版本没有的编译错误(实参与形参类型不匹配)。

  • 相关阅读:
    SQL键值约束、索引使用
    C#字符串的四舍五入
    VB中字符串操作函数
    C#文本选中及ContextMenuStrip菜单使用
    C#关于new的用法
    C#有关日期的使用方法
    break,continue的区别
    在Lua中使用数字的时候有个坑
    关于自动寻径和图、邻接表的学习和启发
    关于在Cocos2dx引擎中手动绑定C++到Lua
  • 原文地址:https://www.cnblogs.com/holyprince/p/4236586.html
Copyright © 2011-2022 走看看