LPCTSTR, const char* 转换问题

咸鸭蛋不好吃 2015-04-09 09:39:22
在程序中调用第三方库里面的一个函数:
bool Connect (LPCTSTR ipaddress, int port, int time = 10000);

在dlg项目中这样编写:
	char ip[12]="1111";
int p =10;
connected = m_controller->Connect((LPCTSTR)ip,p);

是可以编译通过的;

在一个win32DLL项目中 编写, 代码完全相同;
却提示:
1> 正在创建库 e:\Working\branch\Temp\link\myXXX\debug\MyXXXd.lib 和对象 e:\Working\branch\Temp\link\XXX\debug\MyLaserRadard.exp
1>MyXXX.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: bool __thiscall ClrInterfaceCPP::ClrController::Connect(wchar_t const *,int,int)" (__imp_?Connect@ClrController@ClrInterfaceCPP@@QAE_NPB_WHH@Z),该符号在函数 "public: bool __thiscall CMyXXX::Connect(void)" (?Connect@CMyXXX@@QAE_NXZ) 中被引用
1>E:\Working\branch\/Temp/Link/MyXXX/Debug\MyXXX.dll : fatal error LNK1120: 1 个无法解析的外部命令


dlg项目和win32DLL项目都是使用Unicode字符集;(项目属性->配置属性->常规->字符集:使用Unicode字符集)

这是为什么???


如果不加(LPCTSTR)强制转换就提示:
Connect”: 不能将参数 1 从“char [12]”转换为“LPCTSTR”

这是为什么呢?
...全文
192 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
咸鸭蛋不好吃 2015-04-09
  • 打赏
  • 举报
回复
找到问题所在了,


这个通过对比官方示例和自己新建dlg进行对比 ,从属性里面找到的不同点;
这个真心是郁闷了;

不过通过提问 还是学习到新的知识了,感谢楼上各位;
咸鸭蛋不好吃 2015-04-09
  • 打赏
  • 举报
回复
引用 10 楼 worldy 的回复:
属性,依赖项中加入m_controller->Connect所在的库
这个添加绝对是正确了的! 因为m_controller->XXX () 这样调用其他函数都是成功的;
worldy 2015-04-09
  • 打赏
  • 举报
回复
属性,依赖项中加入m_controller->Connect所在的库
笨笨仔 2015-04-09
  • 打赏
  • 举报
回复
LPCTSTR好像就是CString吧,直接定义CString=L“11111”试试
咸鸭蛋不好吃 2015-04-09
  • 打赏
  • 举报
回复
无论调用的dll 字符集是Unicode还是多字节字符集 ,都尝试过了,怎么就这么难找到办法呢?
咸鸭蛋不好吃 2015-04-09
  • 打赏
  • 举报
回复
引用 4 楼 zgl7903 的回复:
LPCTSTR 在UNICODE 下定义为 const wchar* 其他环境下定义为 const char*
大神能给出直接一点的解决办法吗?
wyx100 2015-04-09
  • 打赏
  • 举报
回复
引用 4 楼 zgl7903 的回复:
LPCTSTR 在UNICODE 下定义为 const wchar* 其他环境下定义为 const char*
咸鸭蛋不好吃 2015-04-09
  • 打赏
  • 举报
回复
引用 2 楼 worldy 的回复:
类型不一样 char ip[12]="1111"; 改成 TCHAR ip[12]=_T("11111"); 话说,LZ干吗要贴图?直接贴代码,不行吗?
还是不行啊,问题提示依旧啊!! 我就是直接贴的代码呀 ,,没上图片啊
zgl7903 2015-04-09
  • 打赏
  • 举报
回复
LPCTSTR 在UNICODE 下定义为 const wchar* 其他环境下定义为 const char*
worldy 2015-04-09
  • 打赏
  • 举报
回复
引用 1 楼 skyhuangdan 的回复:
还是因为VS05 代码文件保存编码格式不同导致?
这个跟无法连接有什么关系呢?
worldy 2015-04-09
  • 打赏
  • 举报
回复
类型不一样 char ip[12]="1111"; 改成 TCHAR ip[12]=_T("11111"); 话说,LZ干吗要贴图?直接贴代码,不行吗?
咸鸭蛋不好吃 2015-04-09
  • 打赏
  • 举报
回复
还是因为VS05 代码文件保存编码格式不同导致?

16,371

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧