В настоящее время я пишу программу, которая должна работать как в Windows, так и в Linux.Программа использует динамические модули (LoadLibrary / dlopen) для упрощения развертывания различных функций.
Linux-часть работает просто отлично: основная программа экспортирует функции и переменные с помощью -Wl, - export-dynamic, чтобы модули моглидоступ к ним, и модули могут быть скомпилированы с опцией gcc -shared без необходимости разрешения всех символьных зависимостей при связывании.
В Windows (с использованием MSVC 2010) это, похоже, не работает.Я экспортирую функции и переменные из основной программы, используя __declspec (dllimport), но я не могу получить доступ к функциям и переменным из основной программы, потому что не удается выполнить связывание (неразрешенная внешняя, LNK1120).
Как поступитьс этим?Спасибо.
Редактировать (пример кода):
core-file.cpp
#include "core-file.hpp"
Cls_A cls_instance;
void Cls_A::do_something() {
while(0);
}
core-file.hpp
#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif
class TEST_API Cls_A {
public:
void do_something();
};
extern Cls_A cls_instance;
module.cpp
#include "core-file.hpp"
TEST_API int my_init_function() {
cls_instance.do_something();
return 0;
}