Приведу также и мою переписку с Рамизом Зейналовым.
1. Как подключить TinyXML
http://www.grinninglizard.com/tinyxml/ к Dewarping:
Библиотеку tinyxml следует подключать как статическую библиотеку.
Для этого её надо собрать как Static Library. В результате получается файл tinyxml.lib. В структуре каталогов проекта есть каталог lib, из которого должны подтягиваться все *.lib файлы. Если вы что-то делали с файлом проекта, надо проверить, что у каждого проекта в опциях компилятора в списке Addittional Library Directories стоит ..\lib.
gclib.lib собирается в самом проекте, целевая директория должны быть ..\lib.
2. По поводу использования OpenCV
http://ru.wikipedia.org/wiki/OpenCV :
С OpenCV могут быть проблемы - я использовал версию 1.1, совместимости версий там особой не наблюдается, поэтому вам следует брать именно эту версию.
Кроме того, opencv надо отдельно компилировать, для этого нужен CMake и, возможно, ещё что-то.
Я скачал отсюда
https://sourceforge.net/projects/opencvlibrary/files/opencv-win/1.1pre1/ файл OpenCV_1.1pre1a.exe . Это инсталлятор исходников OpenCV. Он содержал уже готовые файлы cxcore.lib, cv.lib, highgui.lib - которые мне, впрочем, не подошли, и их потребовалось компилировать самостоятельно. Не подошли - то есть при компиляции с ними файла geom_corr.exe он при запуске вылетал с исключением.
Кстати, с этими новыми уловками Microsoft (когда один и тот же вроде бы lib-файл может быть на самом деле абсолютно разным) всё стало настолько замороченным, что я много ругался и мучался

, пока наконец-таки мне не удалось скомпилировать Dewarping. Раньше, когда был MS VC++ 6.0, жизнь с ним была на порядок проще.
Так вот, ранее (когда Рамиз делал свой Dewarping), как я думаю, исходники OpenCV шли со сборочным скриптом для CMake. CMake - это утилита с собственным кроссплатформенным макроязыком, CMake позволяет из своего скрипта сгенерировать компиляционый проект для любой платформы - Windows, Linux, Mac и т.п. В т.ч. для любого компилятора - например, MS VC++ 6.0, и более поздних версий.
Но, слава богу, файл OpenCV_1.1pre1a.exe уже содержал готовый компиляционый проект именно под MS VC++ 2005 Express Edition - так что мне и не потребовалось скачивать и запускать CMake

, чтобы сгенерировать компиляционый проект под MS VC++ 2005 Express Edition (из скрипта для CMake).
Как я уже писал в прошлых постах, при компиляции OpenCV_1.1pre1a получилась следующая полезная продукция, необходимая для компиляции Dewarping:
cxcore.lib, cv.lib, highgui.lib - lib-файлы.
cv110.dll, cxcore110.dll, highgui110.dll - dll-файлы.
3. Я спросил у Рамиза - как мне отвязать его Dewarping от TinyXML и OpenCV, и "перебить" его под FreeImage/язык СИ? Рамиз ответил следующее:
От tinyxml можно отказаться, но тогда надо будет переписать классы, которые работают с конфигурациями в XML. Как минимум, это GCConfig.
С OpenCV всё гораздо сложнее, т. к. вся система на ней построена.
Если от неё отказываться нужно как минимум:
1. Чтение/сохранение графических файлов популярных форматов.
2. Фильтры для изображений, математическая морфология
3. Математика
В общем, я пока что представляю себе возможное упрощение исходников Dewarping так:
1. От TinyXML я, конечно, постараюсь точно избавиться. К чему плодить лишние сущности без крайней необходимости?
2. От OpenCV пока что не стоит уходить. Благо, что OpenCV без проблем можно скомпилировать и под MS VC++ 6.0 (для меня это крайне важно).
3. А вот сам код Dewarping нужно, конечно, вообще переписывать с С++ на С. Код там настолько навороченный - что понять там что-то сейчас крайне трудно. Всё построено на STL, шаблонах, и прочей мутной малонужной хрени. Как известно, все такие алгоритмы можно прекрасно изложить просто на языке СИ - что обычно и делается в таких больших коллективных проектах, как GIMP, FreeImage, minidjvu и т.д. Это и понятно - код на языке СИ в тысячу раз понятнее для всех сторонних программистов (кто будет разбираться в коде Dewarping), чем код на языке СИ++.