在程序中调用第三方库里面的一个函数:
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”
这是为什么呢?