DLL получает символы от своего родителя (загрузчик)

Я портирую программу на MS Windows. Эта программа использует динамически загружаемые плагины. Плагины ссылаются на символы в основной программе. Я даже не могу получить библиотеки DLL за компоновщиком без разрешения всех символов. Есть ли способ решить это?

Ответы на вопрос(1)

(Извините, я хотел бы попросить разъяснений в комментарии, но я слишком много новичка, чтобы быть разрешенным.

Когда вы говорите, что плагины "ссылочные символы в основной программе", речь идет о ссылках на функции или данные? Кроме того, какой язык / компилятор вы используете?

Предполагая, что речь идет только о функциях, и в C / C ++: можно экспортировать функцию из .EXE, как если бы это была DLL. Просто укажите __declspec (dllexport перед определением функции в .EXE. При компиляции .EXE должен быть сгенерирован файл .LIB, который затем можно использовать в качестве входных данных при связывании каждого плагина.

 stephane.leclair25 мая 2011 г., 19:28
На самом деле, нет. Библиотека экспорта - это .LIB, которая полезна для компоновщика при настройке динамических вызовов. Когда вы вызываете функцию, о которой идет речь, это все равно вызов DLL (или, в данном случае, EXE).
 Rubinium22 сент. 2010 г., 15:35
Если я правильно понимаю, вы предлагаете мне ссылку на статическую библиотеку версии программы. Это хорошая идея, чтобы получить копии функций, но это не сработает, если функции ссылаются на глобальные переменные (включая статические), потому что они будут ссылаться на другую копию переменной. На самом деле я просто предполагаю, что это не сработает.

Ваш ответ на вопрос