Ошибки getProcAddressW при использовании Visual Studio2005 и Windows Mobile SDK для отладки проекта Windows CE

я использую 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?

Любые ответы приветствуются!

0

Решение

Первая ошибка компилятора говорит сама за себя. получить «W» в конце GetProcAddressW означает, что метод является API широкого символа (в отличие от GetProcAddressA, который является версией ASCII). Windows CE экспортирует только широкоформатные версии API. Это означает, что вы должны передать строку широких символов. Вы использовали макрос TCHAR, когда вы использовали _T, что делает вложенную строку широким символом, и ошибка исчезает.

Этот же код должен хорошо работать на большой Windows (для любой последней версии в любом случае), при условии, что вы #define UNICODE (который, вероятно, уже включен) и #include "tchar.h" который я думаю, что вы с _T компилирует. Вы могли бы явно позвонить GetProcAddressW вместо просто GetProcAddress (который должен быть #defined для широкой версии, если определен UNICODE).

Ошибка компоновщика источника, которую вы видите, не ясна. Я предполагаю, что __imp_Function2 — это указатель на функцию, которую вы пытаетесь назначить с помощью вызова GetProcAddress? В основном компоновщик не находит его, но основная причина не ясна с информацией, которую вы предоставили.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]