使用visualstudio2005和windows mobile SDK调试windows CE项目时出现getPro

getProcAddressW errors when use visual studio2005 and windows mobile SDK to debug windows CE project

本文关键字:windows 项目 CE getPro 调试 visualstudio2005 mobile SDK 使用      更新时间:2023-10-16

我正在使用Visual Studio 2005Windows Mobile 6 Professional Device SDK调试Windows CE项目(从Windows项目复制)。我使用活动同步连接PC和Win CE设备。然后我创建了一个新的Windows CE项目(复制自Windows项目,但使用Windows mobile 6专业设备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(handle,"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时,有没有任何方法可以使源代码同时适用于Windowswindows CE

任何答案都会通知您!

第一个编译器错误有些不言自明。在GetProcAddressW结尾得到"W"意味着该方法是宽字符API(而GetProcAddressA是ASCII版本)。Windows CE仅导出宽字符版本的API。这意味着您必须传入一个宽字符串。当您使用_T时,您使用了TCHAR宏,这使得所包含的字符串成为宽字符文字,并且错误消失了。

同样的代码在大Windows上应该可以正常工作(不管怎样,对于任何最新版本),前提是#define UNICODE(可能已经在上了)和#include "tchar.h",我认为_T编译了它们。您可以显式调用GetProcAddressW,而不仅仅是GetProcAddress(如果定义了UNICODE,则应该将其#定义为宽版本)。

您看到的源链接器错误不清楚。我猜__imp_Function2是您试图通过GetProcAddress调用分配的函数指针?基本上,链接器找不到它,但根据您提供的信息,根本原因尚不清楚。