Задать вопрос
antonyter
@antonyter

Компиллятор теряет реализацию метода в библиотеке

Пишу класс в статической библиотеке:
class IMercatorMap : public BaseGLObject
{	
public:
	IMercatorMap() : BaseGLObject(BT_NOTHING){};
	virtual ~IMercatorMap(){};
	virtual void SetParameters(int Zoom, const iPoint &LeftBottomIndex, const iPoint &TopRightIndex) = 0;

	static IMercatorMap *Create(bool SmoothZoom);
};

И соответственно реализация:
IMercatorMap *IMercatorMap::Create(bool SmoothZoom)
{
	return new MercatorMap(SmoothZoom);
}

В результате в exe лункующую данную библиотеку получаю:
error LNK2019: ссылка на неразрешенный внешний символ «public: static class ANTSP::IMercatorMap * __stdcall ANTSP::IMercatorMap::Create(bool)»

Что я делаю не так?
  • Вопрос задан
  • 2962 просмотра
Подписаться 3 Оценить 2 комментария
Решения вопроса 1
@vScherba
Слишком мало данных в вопросе, но попробую предположить. Меня настораживает __stdcall в выводе ошибки линковщика. Видать реализован метод с __cdecl а вызывающий код встроил вызов с __stdcall calling convention.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Door
сделайте
extern "C" inline IMercatorMap* Create(bool SmoothZoom)
{
    return new MercatorMap(SmoothZoom);
}
Ответ написан
Ваш ответ на вопрос

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

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