Я пытаюсь написать кроссплатформенную программу на С++, которая будет загружать определенные модули (общие библиотеки) во время выполнения. Для этого я использую ClassLoader из библиотек Poco C++. Я написал цепочку компиляции, используя autoconf, automake и libtool. Это не должно быть проблемой в среде Linux, но проблема возникает в Windows. Я использую MinGW и MSYS при компиляции, чтобы иметь возможность использовать мои файлы Makefile. ClassLoader использует специфичную для Windows функцию LoadLibrary() для загрузки модулей, что означает, что мне нужно скомпилировать их как библиотеки DLL.
Класс, который я компилирую в библиотеку, наследует другой класс в основном приложении. Затем, когда я пытаюсь запустить make, он много жалуется на неопределенные ссылки и отказывается создавать разделяемую библиотеку. Я думаю, это из-за искажения имени. Или это потому, что я не могу наследовать класс вне библиотеки? (Этот класс не включен в исходники библиотеки, но заголовочный файл найден)
Я не совсем уверен, сколько проблем принесет то, что я настаиваю на компиляции под MinGW + MSYS, но все же использую LoadLibrary(). Кто-нибудь с опытом этого?
LoadLibrary
с DLL, созданными с помощью MinGW/libtool, без особых проблем. Я считаю, что ваша проблема может быть связана с сочетанием C++/DLL. Может быть полезен (короткий) пример кода, показывающий проблему. - person rodrigo   schedule 22.08.2011