Я думаю, что я понимаю суть ошибок LNK2019 от чтения SO и эта статья MSDN.
у меня есть такой Зачем вопрос и один Как вопрос (оба уже заданы в названии).
Зачем библиотека предоставит файл .cpp с неосуществленными функциями? Я предполагаю, что ответ: «Таким образом, конечные пользователи могут сами реализовать эти функции или« связать »что-то еще». (Пожалуйста, поправьте меня, если я ошибаюсь, но я продолжу это предположение.)
Например, на снимке экрана ниже (нажмите для увеличения), я показываю ошибки LNK2019, с которыми я столкнулся, а также файл-нарушитель, wx.cpp
,
Ни один из методов в классе mglCanvasWX
реализованы (и да, я прокрутил вниз :-). Вот постоянный пастебин из wx.cpp
и вот выход, на случай, если кто-то захочет взглянуть на код, но я бы не стал никого просить зайти так далеко.
Как такие функции реализуются?
я угадывание это .длл файлы, которые содержат реализации. Поэтому мне нужно найти .длл реализация файла Window
, ToggleAlpha
, ToggleLight
, и так далее. (Я думаю, я могу игнорировать все другие типы файлов, .OBJ, .Lib, .ехр, и т. д.) Но откуда я знаю где найти те .длл файлы? — или даже знаете, что .длл файл делает реализовать эти функции, так как они являются бинарными (не читаемыми человеком) файлами?
Мне жаль задавать два вопроса одновременно, но я думаю, что это основные вещи, которые мне нужно понять, чтобы устранить эту ошибку компоновщика. (Я чувствую, что мне не хватает не замужем концепции, даже если мне нужно было задать два вопроса.) Заранее благодарю за любые указания, которые вы можете дать, и извините, что добавляю к существующей куче вопросов LNK2019 по SO …
Это может быть актуально:
# define MGL_EXPORT __declspec(dllexport)
Но я не уверен, указывает ли это на то, что этот невыполненный класс экспортируется как DLL (для чего нужна такая DLL?), Или указывает, что этот класс должен быть реализуется с помощью файла DLL (что будет иметь больше смысла).
Кроме того, причина, по которой я сформулировал свой вопрос, «Зачем нужна библиотека …», является то, что другая зависимость в этом проекте, mgl-fltk
, обеспечивает похожий источник, но делает реализовать аналогичный класс и его функции (и прекрасно строит)! Смотреть скриншот Вот. Его определение класса, однако, в отличие от mgl-wx
опускает MGL_EXPORT
, намекая мне, что ФЛТК был не предназначен для реализации извне.
class mglCanvasFL : public mglCanvasWnd
Хорошо, после некоторого размышления я придумал теорию, но только опытный разработчик программного обеспечения мог сказать мне, насколько это правдоподобно / имеет смысл.
Возможно, разработчики MathGL просто не удосужились реализовать эти определения? То есть возможно ли, что MathGL еще не поддерживает wxWidgets?
Смотрите, в оригинальном источнике MathGL есть эти файлы:
QT, FLTK и GLUT все реализовать их mglCanvasQT
, mglCanvasFL
, а также mglCanvasGLUT
, например
// qt.cpp
void mglCanvasQT::Animation() { QMGL->animation(true); }
void mglCanvasQT::ToggleAlpha() { QMGL->setAlpha(!QMGL->getAlpha()); }
// fltk.cpp
void mglCanvasFL::Animation() { Fl::lock(); mgl_sshow_cb(0,mgl); Fl::unlock(); }
void mglCanvasFL::ToggleAlpha() { Fl::lock(); mgl->toggle_alpha(); Fl::unlock(); }
// glut.cpp
class mglCanvasGLUT : public mglCanvasGL
{
public:
// ...
void ToggleAlpha() { _mgl_key_up('r',0,0); }
void Animation() { _mgl_key_up('m',0,0); } ///< Run slideshow (animation) of frames
// ...
}
и это только mglCanvasWX
это осталось невыполненным, и только mglCanvasWX
это имеет MGL_EXPORT
макрос опережает имя своего класса.
Так каково вероятное объяснение? Та поддержка WX просто еще не там? Или поддержка WX существует, но ее проще найти как внешнюю библиотеку (DLL)? Я был бы очень признателен, если бы опытный разработчик программного обеспечения мог взвесить это …
Святой Дж. Скит, моя теория оказалась верной.
После нескольких часов экспериментов (и написания этого вопроса) я начал понимать, что, возможно, wxWidgets просто не была реализована для использования с MathGL. (См. «Теория», см. Выше.) Я немного погуглил в этом новом контексте и вуаля! — от сопровождающего самого MathGL (имя которого я узнал только потому, что это было имя пользователя / группы на скриншоте 7-Zip выше) ) —
MortenMacFly 1/22/11
Привет, мне интересно, что делает пример wx. Кажется, есть
заглушка подготовлена, но пока не реализована функциональность. Я хотел бы использовать
эта библиотека в проекте wxWidgets. Есть намеки?Алексей Балакин 25.01.11
Привет,
В основном да. Я перешел с wxWidgets на Qt много лет назад … Итак,
Я уже забыл много перкуссий wxWidget и решил прекратить делать
рабочее окно на основе wxWidget. Есть несколько вопросов: MathGL
уже есть 2 (на основе FLTK и Qt), у меня не так много времени, чтобы
написать | проверить wxWidget один :(.Итак, прямо сейчас вы можете сделать следующее:
1) Используйте растровое изображение RGB, созданное MathGL, для отображения изображения вашего wxWidget
контроль. Здесь есть образец
http://mathgl.sourceforge.net/mathgl_en/mathgl_en_10.html#Drawing-in-memory2) Используйте виджет wxMathGL, определенный в mgl / mgl_wx.h. Я очень надеюсь, что это
должно работать как есть, но я не проверял это 🙁3) Помогите мне написать тестовый виджет wxMathGL и класс mglGraphWX, который
отобразит окно с элементами управления на основе wxWidget.I (и других I
думаю) буду очень благодарен.
нить в которой я нашел это обсуждает также некоторые альтернативы, хотя я не знаю, работают ли они.
Других решений пока нет …