я использую Visual Studio 2005
а также Windows Mobile 6 Professional Device SDK
отладить Windows CE
проект (скопирован из проекта Windows). Я использую активную синхронизацию для подключения ПК и устройства 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(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).
Я не знаю, если я опишу проблему ясно, но я хочу спросить, есть ли способ сделать исходный код, который предназначен для Windows
а также windows CE
когда в исходном коде некоторые функции из разных DLL?
Любые ответы приветствуются!
Первая ошибка компилятора говорит сама за себя. получить «W» в конце GetProcAddressW
означает, что метод является API широкого символа (в отличие от GetProcAddressA
, который является версией ASCII). Windows CE экспортирует только широкоформатные версии API. Это означает, что вы должны передать строку широких символов. Вы использовали макрос TCHAR, когда вы использовали _T
, что делает вложенную строку широким символом, и ошибка исчезает.
Этот же код должен хорошо работать на большой Windows (для любой последней версии в любом случае), при условии, что вы #define UNICODE
(который, вероятно, уже включен) и #include "tchar.h"
который я думаю, что вы с _T
компилирует. Вы могли бы явно позвонить GetProcAddressW
вместо просто GetProcAddress (который должен быть #defined для широкой версии, если определен UNICODE).
Ошибка компоновщика источника, которую вы видите, не ясна. Я предполагаю, что __imp_Function2 — это указатель на функцию, которую вы пытаетесь назначить с помощью вызова GetProcAddress? В основном компоновщик не находит его, но основная причина не ясна с информацией, которую вы предоставили.
Других решений пока нет …