С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Humanoid
Почетный модератор
9871 / 3770 / 174
Регистрация: 12.06.2008
Сообщений: 11,183
#1

warning при использовании переменной из подключаемого файла - C++

24.01.2012, 10:59. Просмотров 718. Ответов 2
Метки нет (Все метки)

При работе с библиотекой slang я подключаю файл slang.h
Мне нужно получить значение двух переменных SLtt_Screen_Rows и SLtt_Screen_Cols... вроде бы всё работает нормально, но при компиляции появляется предупреждение:
c:/qtsdk/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: warning: auto-importing has been activated without --enable-auto-import specified on the command line.
This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.
Это происходит только когда есть обращение к этим переменным. В принципе, меня всё страивает (т.к. всё работает нормально), но хотелось бы понять причину предупреждения и как от него избавиться.

В файле slang.h эти переменные объявлены как:
C++
1
2
SL_EXTERN int SLtt_Screen_Rows;
SL_EXTERN int SLtt_Screen_Cols;
SL_EXTERN объявлен ранее как
C++
1
# define SL_EXTERN extern SL_IMPORT
В свою очередь SL_IMPORT объявлен как просто
C++
1
# define SL_IMPORT
Т.е., на сколько я понимаю, переменные можно считать как
C++
1
2
extern int SLtt_Screen_Rows;
extern int SLtt_Screen_Cols;
Компилятор mingw32.
Подскажите, в каком направлении копать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2012, 10:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос warning при использовании переменной из подключаемого файла (C++):

Ошибка повторения имен переменных при использовании глобальной переменной - C++
Есть 3 файла: head.h #ifndef HeuristicKardano_probmatr_h #define HeuristicKardano_probmatr_h int m1; int m2; int m3; #endif

Access violation при использовании файла в lib библиотеке - C++
Привет Всем. Компилятор BCB 5.01, WinXP. У меня возникла следующая проблема: Есть функция в файле f1.cpp: #include <string> ...

Использование переменной в качестве аргумента при создании файла через ofstream - C++
Рассмотрите пожалуйста следующий код, он работает: /*! Тут насколько я понимаю, мы разбираемся с именем создаваемого\открываемого файла ...

Warning при компиляции при чтении из msado15.dll - C++
Warning:workvcmfcmymfcdebugmsado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned Кто...

Получить доступ к переменной класса при наличии такого же имени переменной в функции - C++
Например, есть приватная переменная clientName в классе. Также есть точно такая же переменная в конструкторе этого класса. И мне нужно...

При использовании оператора GOTO зацикливается программа при введении букв. - C++
Приветствую всех новых знакомых в этом храме программирования. Я новичек, пытаюсь программировать в С++ недавно. У меня возник вопрос...

2
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
24.01.2012, 11:07 #2
The standard Windows dll format supports data imports from dlls only by adding special decorations (dllimport/dllexport), which let the compiler produce specific assembler instructions to deal with this issue. This increases the effort necessary to port existing Un*x code to these platforms, especially for large c++ libraries and applications. The auto-import feature, which was initially provided by Paul Sokolovsky, allows one to omit the decorations to archieve a behavior that conforms to that on POSIX/Un*x platforms. This feature is enabled with the --enable-auto-import command-line option, although it is enabled by default on cygwin/mingw. The --enable-auto-import option itself now serves mainly to suppress any warnings that are ordinarily emitted when linked objects trigger the feature's use.
auto-import of variables does not always work flawlessly without additional assistance. Sometimes, you will see this message

"variable '<var>' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details."

The --enable-auto-import documentation explains why this error occurs, and several methods that can be used to overcome this difficulty.
http://sourceware.org/binutils/docs-2.16/ld/WIN32.html
1
Humanoid
Почетный модератор
9871 / 3770 / 174
Регистрация: 12.06.2008
Сообщений: 11,183
24.01.2012, 11:56  [ТС] #3
Надеялся, что можно программным путём это сделать. Ну да ладно... добавил в файл проекта Qt строку
Код
QMAKE_LFLAGS += -enable-auto-import
и теперь он использует этот параметр. Спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2012, 11:56
Привет! Вот еще темы с ответами:

Баг при использовании класса string при записи в бинарный файл - C++
При записи в бинарный файл пользовательского класса, всё отлично отрабатывает, но, если в классе использовался класс string, то в конце...

При использовании getline ввод при Enter заканчивается только после пробела - C++
int main() { string slovo; double n; while(slovo != &quot;пока&quot; ) { getline (cin,slovo,' '); if (slovo ==...

Warning-и при использовании CSpinEdit - C++ Builder
Доброе всем время суток, дамы и господа... Работаю в RAD XE3 и столкнулся с такой вот непоняткой: на форму бросаю компонент CSpinEdit...

Ошибка при использовании локальной переменной - Mono
Проблема заключается в следующем. Есть класс DataBase: using System; using MySql.Data.MySqlClient; namespace MagChatServer { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.