Связь Win32 API и пользовательской сборки GCC (StrawberryPerl)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Связь Win32 API и пользовательской сборки GCC (StrawberryPerl)

Сообщение Anonymous »

Я пытаюсь создать исходный код, содержащий код Win32 API с GCC 8.3.0 (i686-posix-dwarf), который поставляется с пакетом Strawberry Perl Portable. Он легко создает код, но испытывает трудности при связывании с основными библиотеками DLL Windows:

Код: Выделить всё

ld.exe: CMakeFiles\ninja.dir/objects.a(util.cc.obj):util.cc:(.text+0x10ce):
undefined reference to `_imp__GetLogicalProcessorInformationEx@12'
Код был настроен с помощью CMake со следующим cmd:

Код: Выделить всё

cmake -B build -S . -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++
-DCMAKE_GENERATOR="MinGW Makefiles" -DCMAKE_MAKE_PROGRAM=gmake
-DBUILD_TESTING=OFF
После некоторого поиска в Google я добавил -DCMAKE_EXE_LINKER_FLAGS="-L\"C:\Windows\System32\" -Wl,--as-needed -lkernel32 в cmake конфигурации cmake, и ошибка изменилась на:

Код: Выделить всё

ld.exe: strawberry-perl-5.32.1.1-32bit-portable/c/bin/../lib/gcc/i686-w64-mingw32/8.3.0/../../../../i686-w64-mingw32/lib/../lib/libmingwex.a(lib32_libmingwex_a-misc.o):misc.c:(.text+0x60a):
undefined reference to `_imp__LeaveCriticalSection@4'
ld.exe: strawberry-perl-5.32.1.1-32bit-portable/c/bin/../lib/gcc/i686-w64-mingw32/8.3.0/../../../../i686-w64-mingw32/lib/../lib/libmingwex.a(lib32_libmingwex_a-wcrtomb.o):wcrtomb.c:(.text+0x75):
undefined reference to `_imp__WideCharToMultiByte@32'
Насколько я понимаю, он пытается найти функции Win32 dll, и, добавив -lkernel32, я помог найти некоторые недостающие функции, но он все еще не может найти их все.
Есть ли способ исправить неопределенные ошибки ссылки?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... wberryperl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»