оооочень я пишу скрипт-интерпретатор. И в основном, я хочу, чтобы некоторые классы и функции хранились в DLL, но я хочу, чтобы DLL искала функции в программах, которые ссылаются на нее, например,
program dll
----------------------------------------------------
send code to dll-----> parse code
|
v
code contains a function,
that isn't contained in the DLL
|
list of functions in <------/
program
|
v
corresponding function,
user-defined in the
program--process the
passed argument here
|
\--------------> return value sent back
to the parsing function
Мне было интересно, как мне скомпилировать DLL с помощью gcc? Ну, я использую порт Windows GCC. Как только я скомпилирую .dll, содержащую мои классы и функции, как мне связать его с моей программой? Как я могу использовать классы и функции в DLL? Может ли DLL вызывать функции из программы, ссылающейся на нее? Если я сделаю объект класса {...}; в DLL, тогда, когда DLL загружается программой, объект будет доступен для программы? Заранее спасибо, мне действительно нужно знать, как работать с DLL в C ++, прежде чем я смогу продолжить этот проект.
«Можете ли вы добавить более подробную информацию о том, почему вы хотите, чтобы DLL вызывала функции в основной программе?»
Я думал, что диаграмма вроде как объяснила это ... программа, использующая DLL, передает кусок кода в DLL, которая анализирует код, и если в указанном коде обнаруживаются вызовы функций, то соответствующие функции внутри DLL вызываются ... например, если я передал "a = sqrt (100)", то функция парсера DLL нашла бы вызов функции sqrt (), а внутри DLL была бы соответствующая функция sqrt (), которая вычисляла бы квадратный корень переданного ему аргумента, а затем он возьмет возвращаемое значение из этой функции и поместит его в переменную a ... как и в любую другую программу, но если соответствующий обработчик для функции sqrt () не найден в DLL (будет список поддерживаемых функций), затем она вызовет аналогичную функцию, которая будет находиться внутри программы, использующей DLL, чтобы проверить, есть ли какие-либо пользовательские функции с таким именем.
Итак, скажем, вы загрузили DLL в программу, что дает вашей программе возможность интерпретировать сценарии этого конкретного языка, программа может вызывать библиотеки DLL для обработки отдельных строк кода или передавать имена файлов сценариев для обработки ... но если вы хотите добавить в скрипт команду, которая соответствует цели вашей программы, вы можете сказать, установить логическое значение в DLL, сообщая, что вы добавляете функции к ее языку, а затем создать функцию в своем коде, которая выдаст список функции, которые вы добавляете (DLL будет вызывать ее с именем нужной ей функции; если эта функция определена пользователем и содержится в вашем коде, функция будет вызывать соответствующую функцию с аргументом, переданным ей DLL, возвращает возвращаемое значение пользовательской функции обратно в DLL, и если она не существует, она возвращает код ошибки или NULL или что-то). Я начинаю понимать, что мне придется найти другой способ, чтобы вызовы функций проходили только в одну сторону