0

我正在使用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)。

我不知道我是否清楚地描述了这个问题,但我想问有没有办法让源代码既适用于源代码,又适用Windowswindows CE 源代码中的某些函数来自不同的 DLL 吗?

任何答案都会被应用!

4

1 回答 1

0

第一个编译器错误有点不言自明。在末尾获得“W”GetProcAddressW表示该方法是宽字符 API(GetProcAddressA与 ASCII 版本相反)。Windows CE 仅导出 API 的宽字符版本。这意味着您必须传入一个宽字符串。您在使用 时使​​用了 TCHAR 宏_T,这使包含的字符串成为宽字符文字,并且错误消失了。

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

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

于 2013-08-23T14:36:08.807 回答