Sooooo Я пишу интерпретатор скриптов. И в принципе, я хочу некоторые классы и функции, хранящиеся в DLL, но я хочу DLL искать функций в рамках программ, которые связываются с ним, как,Компиляция DLL с gcc
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 или s omething). Я начинаю видеть, что я должен найти другой способ обойти это, чтобы сделать вызовы функций идти в одну сторону только
Ничего себе, я даже не знал, что есть победный порт gcc. Я бы попытался использовать gcc с окнами в качестве целевой платформы. – cbrulak
Возможно, вы должны указать точный компилятор, который вы используете. Вероятно, документация для этого компилятора рассказывает вам, как создавать библиотеки DLL. – SoapBox
это называется mingw, или mingw32. Я думаю ... Я попытаюсь найти документацию gcc, но я довольно новичок в C и C++, поэтому некоторые его аспекты трудно понять. – user61721