@sddvxd

Почему возникает ошибка линковки в данном случае?

Добрый день!

Приходится компилировать свой проект из командной строки с помощью g++

g++ main.cpp  -lglfw3 -lgdi32 -lopengl32 -lglew32 -lopengl32


Эта команда успешно выполняется. Но в той IDE , где я пытаюсь его собрать (QtCreator) вылезает следующая ошибка:
'memset' was not declared in this scope
 inline void PropVariantInit (PROPVARIANT *pvar) { memset (pvar, 0, sizeof (PROPVARIANT)); }


причем файл qmake настроен подобным образом:

TARGET = learning
TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS

CONFIG += c++11

LIBS += -lglfw3 -lgdi32 -lopengl32 -lglew32 -lopengl32

SOURCES += \
        main.cpp


Аналогичным образом указаны бинарные файлы библиотек, но линковщик не находит функцию выше при попытке собрать проект в IDE. Подскажите пожалуйста, почему так может быть
  • Вопрос задан
  • 227 просмотров
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему возникает ошибка линковки в данном случае?
'memset' was not declared in this scope

Это ошибка компиляции, а не линковки. Потому что не хватает #include <cstring>
Ответ написан
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Посмотрите, какой Makefile генерирует qmake. Там могут быть добавлены лишние пути или флаги из spec файла.
Проверьте, используется ли реально при компиляции и линковке g++, а не, скажем gcc (это можно посмотреть в окне Compile output).
Проверьте, включён ли файл cstring везде, где это нужно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы