C++ 使用visual Studio 2005和windows mobile SDK调试windows CE项目时出现getProcAddressW错误
我正在使用C++ 使用visual Studio 2005和windows mobile SDK调试windows CE项目时出现getProcAddressW错误,c++,windows-ce,getprocaddress,C++,Windows Ce,Getprocaddress,我正在使用Visual Studio 2005和Windows Mobile 6 Professional Device SDK调试Windows CE项目(从Windows项目复制)。我使用主动同步连接PC和Win CE设备。然后我创建了一个新的Windows CE项目(从Windows项目复制,但创建时使用Windows mobile 6 professional device SDK作为平台。vc++,智能设备,控制台应用程序) 在生成windows CE项目时,出现了一些错误: Erro
Visual Studio 2005
和Windows Mobile 6 Professional Device SDK
调试Windows CE
项目(从Windows项目复制)。我使用主动同步连接PC和Win CE设备。然后我创建了一个新的Windows CE项目(从Windows项目复制,但创建时使用Windows mobile 6 professional device SDK作为平台。vc++,智能设备,控制台应用程序)
在生成windows CE项目时,出现了一些错误:
Error 1 error C2664: 'GetProcAddressW' : cannot convert parameter 2 from 'const char [21]' to 'LPCWSTR' xxxxx.cpp 42
它发生在我使用LoadLibrary(_T(xx.dll))之后代码>然后我使用了GetProcAddress(句柄,“functionName”)代码>
如果我将其更改为使用GetProcAddress(handle,_T(“functionName”)代码>此错误消失。但是
新错误
LINK: error LNK2019: unresolved external symbol __imp_Function2
referenced in function wmain xxxx.obj
发生时,Function2来自另一个DLL项目(适用于windows和windows CE)
我不知道我是否清楚地描述了这个问题,但我想问,当源代码中的某些函数来自不同的DLL时,是否有任何方法可以使源代码同时适用于Windows
和Windows CE
任何答案都是值得的 第一个编译器错误有些不言自明。在getprocadressw
末尾获取“W”表示该方法是宽字符API(与getprocadressa
相反,后者是ASCII版本)。Windows CE仅导出API的宽字符版本。这意味着您必须传入一个宽字符串。当您使用\u T
时,使用了TCHAR宏,这使得所包含的字符串成为宽字符文字,错误消失
同样的代码应该可以在大窗口上正常工作(不管是哪种最新版本),前提是您定义UNICODE(可能已经打开)并包含“tchar.h”
,我认为您是因为\u T
编译的。您可以显式调用GetProcAddressW
,而不仅仅是GetProcAddress(如果定义了UNICODE,则应将其定义为宽版本)
您看到的源链接器错误不清楚。我猜uuu imp_ufunction2是一个函数指针,您正试图通过GetProcAddress调用来分配它?链接器基本上找不到它,但根据您提供的信息,根本原因还不清楚。Hi-ctacke,非常感谢您的解释。对于链接错误,CE控制台项目使用加载时动态链接。它包括XXDriver(windows项目)的头文件XXDriver.h(还有一个XXDriverCE项目),它直接使用XXDriver.h中的函数,例如链接错误中的函数2:LINK:error LNK2019:unresolved external symbol\u imp\u Function2在运行windows控制台项目时在函数wmain xxxx.obj中引用,它可以正确使用“XXDriver.h”中的功能。但是当我在VisualStudio2005中调试windows CEdevice上的CE项目时,“XXDriver.h”中的每个函数都出现了上述链接错误。您认为导致这些链接错误的原因是什么?您好,我已经解决了链接问题。除了只包括CE项目的头文件外,我还需要包括XXDriverCE发行文件夹中的XXDriverCE.lib文件。现在几乎所有上述链接错误都已解决。非常感谢你。我有太多的东西要学习为windows和windows CE开发DLL。。。