170 похожих чатов

Здравствуйте, mingw выдаёт ошибки, вот одни из них: ``` D:/Programs/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:/OpenSSL/MinGW static/lib64/libcrypto.a(libcrypto-lib-bss_conn.obj):bss_conn.c:(.text+0x5c4):

undefined reference
to `__imp_WSAGetLastError'
D:/Programs/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:/OpenSSL/MinGW static/lib64/libcrypto.a(libdefault-lib-winstore_store.obj):winstore_store:(.text+0x137): undefined reference to `__imp_CertOpenSystemStoreW'
я указал в cmake
target_link_libraries(${PROJECT_NAME} ws2_32)
target_link_libraries(${PROJECT_NAME} crypt32)
```
но, всё равно выдаёт ошибки. msvc нормально линкует. до этого была проблема в том, что у меня были собраны библиотеки openssl с помощью visual studio, пересобрал с помощью mingw64, библиотеки теперь .a, но выдаёт ошибки линкера, которые обычно возникают, если не указать в зависимостях ws2_32 и crypt32. как мне с помощью mingw64 это собрать?

19 ответов

53 просмотра

Явно линкер не нашёл определение какого-то символа, надо библиотеку линковать.

Bergemon- Автор вопроса
Дмитрий 🎮
Явно линкер не нашёл определение какого-то символа...

я указал в cmake target_link_libraries(${PROJECT_NAME} ws2_32) target_link_libraries(${PROJECT_NAME} crypt32) msvc нормально линкуется с ними

Bergemon
я указал в cmake target_link_libraries(${PROJECT_N...

А какое расширение у библиотеки? Допустим, у тебя есть библиотека MyLib. Для msvc он будет искать фалй с расширением dll или lib + def. Mingw будет искать libMyLib.so или libMyLib.a.

Bergemon- Автор вопроса
Дмитрий 🎮
А какое расширение у библиотеки? Допустим, у тебя...

это виндовые библиотеки, .dll вроде они должны быть

Bergemon
это виндовые библиотеки, .dll вроде они должны быт...

Тогда укажи линкеру библиотеку с конкретным расширением. Вместо -lMyLib укажи -lMyLib.dll. Библиотеки mingw и msvc имеют разный формат, учити это.

Bergemon
это виндовые библиотеки, .dll вроде они должны быт...

у MS существует такая вещь как import library и она .lib как это не странно. Что там наворотили авторы mingw Надо спрашивать уних

Bergemon- Автор вопроса
Дмитрий 🎮
Тогда укажи линкеру библиотеку с конкретным расшир...

уже понял сегодня, столкнулся, пересобрал openssl с помощью mingw как писал раньше, в другом тг канале помогли

Bergemon
я указал в cmake target_link_libraries(${PROJECT_N...

https://ru.stackoverflow.com/questions/1330622/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0-%D0%BF%D1%80%D0%B8-%D0%BB%D0%B8%D0%BD%D0%BA%D0%BE%D0%B2%D0%BA%D0%B5-winsock2-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-cmake-%D0%B2-mingw-undefined-reference

Bergemon
я указал в cmake target_link_libraries(${PROJECT_N...

И ещё https://stackoverflow.com/a/2033632 Учти, порядок перечисления библиотек важен.

Bergemon- Автор вопроса
Александр Водянников
https://ru.stackoverflow.com/questions/1330622/%D0...

лол, он есть на русском, спасибо большое!

Bergemon- Автор вопроса

здесь в точности тоже самое, что использую я и причём с msvc это работает

Bergemon
здесь в точности тоже самое, что использую я и при...

Попробуй список библиотек заключить в такую конструкцию: -Wl,--start-group -lLib1 -lLib2 -Wl,--end-group И не будет у тебя проблем с порядком перечисления библиотек.

Bergemon- Автор вопроса
Дмитрий 🎮
Попробуй список библиотек заключить в такую констр...

я не знаю как передать флаги компилятору из смейка

Bergemon- Автор вопроса
Bergemon
я не знаю как передать флаги компилятору из смейка

set(CMAKE_CXX_FLAGS тут флаги например- Wall ) еще есть вот такие варианты add_compile_options( тут тоже можно разные флаги -stdlib=libc++ -fcoroutines-ts -lpthread указаны для примера), link_libraries(-lmingw32 -lmingwex -lkernel32 )

Bergemon
я не знаю как передать флаги компилятору из смейка

Нашёл, как это можно сделать: https://stackoverflow.com/a/73641444 А ещё я кратко описал эту проблему, её симптомы, причины и решение.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта