Ошибки LNK2019 / LNK2001: Почему библиотека предоставляет файл .cpp с нереализованными функциями? (Как они реализуются?)

Я думаю, что я понимаю суть ошибок 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)? Я был бы очень признателен, если бы опытный разработчик программного обеспечения мог взвесить это …

3

Решение

Святой Дж. Скит, моя теория оказалась верной.

После нескольких часов экспериментов (и написания этого вопроса) я начал понимать, что, возможно, 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-memory

2) Используйте виджет wxMathGL, определенный в mgl / mgl_wx.h. Я очень надеюсь, что это
должно работать как есть, но я не проверял это 🙁

3) Помогите мне написать тестовый виджет wxMathGL и класс mglGraphWX, который
отобразит окно с элементами управления на основе wxWidget.I (и других I
думаю) буду очень благодарен.

нить в которой я нашел это обсуждает также некоторые альтернативы, хотя я не знаю, работают ли они.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]