Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用visual Studio 2005和windows mobile SDK调试windows CE项目时出现getProcAddressW错误_C++_Windows Ce_Getprocaddress - Fatal编程技术网

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。。。