Exe като DLL
Exe Dll харесва
Как да направите изпълним # XA0; файл (Търсейки-файл) да бъдат изнесени функции, както в DLL. Ако е възможно да се пример. Благодаря предварително.
С други думи, се изнасят за EXE, че имате нужда точно като теб eksportiruesh означавано в DLL.
употреби
# XA0; Форми,
# XA0; Unit1 в "Unit1.pas";
функционира Exprt (S: String): String; износ;
започвам
# XA0; Резултати: = S + "износ"
приключи;
започвам
# XA0; Application.Initialize;
# XA0; Application.CreateForm (TForm1, Form1);
# XA0; Application.Run; # XA0;
край.
# XA0; функция Exprt (S: String): String; stdcall; външно "project1.exe";
процедура TForm1.Button1Click (Sender: TObject);
VAR ES: низ;
започвам
# XA0; ES: = Exprt ( "Call");
# XA0; Memo1.Lines.Add (и);
приключи;
Втората молба няма да се стартира.
Има kakayato инициализация грешка.
И аз не казвам, че зачена задължително да работи.
Но процедура Exprt, както виждате, се изнасят без проблеми)
Аз не предлагам да се ангажират с тази глупост и да реализира ekporiruemuyu процедура както трябва да бъде - в DLL.
На първо място, наричайки споразумението не съвпадат
На второ място, линията се използва като параметри
И нула не е маса преместване. Всичко останало е без значение.
> _Anonim # XA0; (05.04.07 10:17)
И в DLL -Ke работи.
> Аз не предлагам да се ангажират с тази глупост и да реализира ekporiruemuyu
> Процедура както трябва да бъде - в DLL.
Е, ако е възможно да се изнася от Търсейки -shki, вие все още се чудите как да импортирате тази функция в друго приложение?
Ядох използвате Търсейки файла като библиотеката в същото време (за разлика от DLL), не са работили секцията с инициализация. За своя код, по принцип, не е от решаващо значение.
Но параметри и правила функцията прави трябва да е същото, ако stdcall и в спецификацията и свързването:
>> функция Exprt (ите: String): String; Износ
>> функция Exprt (ите: String): String; stdcall; Външно "project1.exe";
String Задължително AnsiString не може да бъде ShortString (от кода не се вижда)
> s_ # XA0; (05/04/07 10:52) [7]
> Как да внасят тази функция в друго приложение?
В обичайния начин. По същия начин, както и от DLL.
Но, повтарям, по принцип, да работи тази схема няма.
За две важни причини - при изтегляне Търсейки-модул, тъй като не е библиотеката е правилно конфигурирани и инициализира.
Само за този код е все още критично!)
Тук са абсолютно работещ код за DLL
употреби
форми,
Unit1 в "Unit1.pas";
функция Exprt (S: PChar): PChar; износ;
започвам
Резултати: = PChar (а + "износ")
приключи;
започвам
Application.Initialize;
Application.CreateForm (TForm1, Form1);
Application.Run; # XA0;
край.
функция Exprt (S: PChar): PChar; външно "project1.exe";
процедура TForm1.Button1Click (Sender: TObject);
VAR ES: низ;
започвам
ES: = Exprt ( "Call");
Memo1.Lines.Add (и);
приключи;
Но когато аз правя от първия код Търсейки-капака чрез натискане на бутона във функцията се появява грешка нарушение Exprt Access
> Тук са абсолютно работещ код за DLL
> Резултати: = PChar (а + "износ")
Това е абсолютно неработен код, дори и за монолитни приложения.
Фактът, че такъв код в някои случаи не води до нарушаване на достъпа - само в резултат на добра воля към съдбата на глупаци, болните и пиян.
> s_ # XA0; (05/04/07 11:34) [12]
> Мен е важно да се определи дали вносът е възможно в друга
> Приложения
Вие вече казах - това е възможно.
И вие виждате това, или може би просто не може да компилира приложението за импортиране.
Но процедурите за внос и действителната повикване / изпълнението на процедури при внос - две отчетливи разлики.
На първо място, както виждате, не създава проблеми, възможност за безпроблемно изпълнение на втората зависи от много фактори, двете най-важни от които са били съобщени на вас.
> Тук са абсолютно работещ код за DLL
Но това е абсолютно глупава и безсмислена.
От нашия опит в D6 винаги библиотеката връща низ като PChar
докато не се е случило на библиотеката в памет AV. Може би имам късмет :))
> Критичност на раздел модул инициализация не мога да видя
Никой не инициализира, ако сте на блоковете, от които са изградени EXE-модул. И сред тях лесно MB и обект, в който мениджърът на паметта се реализира, което също изисква инициализация. Поредицата е Резултат: = S + "Износ" е гарантирано да се свържете с управителя
> Но, повтарям, по принцип, да работи тази схема няма да бъде
Но какво да направя, за да най-накрая P А Б С Т Р А Т AAAAAAAAAAAA!
> И какво да направя, за да най-накрая P А Б С Т Р А Т AAAAAAAAAAAA!
И какво от спешната необходимост от такъв извратен?
> [18] s_ # XA0; (05.04.07 13:22)
Gmina Skąpe DLL, и след това да промените разширението EXE
> s_ # XA0; (05/04/07 13:22) [18]
> Как да се направи, че миналата P А Б С Т Р А Т AAAAAAAAAAAA!
Защо?)
В DLL-не сте доволни?
Защо?)
> Най-DLL не сте доволни?
Попитах в пълно разбираем въпрос, дали да се направи vzmozhno внесени функция от Търсейки-shki?
Е, ако не е, това, което е възможно за да експортирате функции в един изпълним файл?
Защо?)
Например:
# XA0, аз работя с две приложения, както и един от тях искате да използвате функциите на други приложения.
Авансово казвам, че аз не искам да го използвам всеки DDE, и т.н.
> И един от тях искате да използвате функциите на други приложения
в тези случаи е по-добре като цяло функция направи DLL, който може да juzat две Търсейки
Или пишете EXE като COM-сървър
> s_ # XA0; (05/04/07 16:00) [22]
> Попитах в пълно разбираем въпрос, дали да се направи vzmozhno
> Внесените функция от Търсейки-shki?
Съвсем ясно е за вас и да се отговори - може би.
Но не и в твоя случай.
Можете ли да ми кажете
това, което прави възможно да изнася функции в един изпълним (Търсейки) файл. ((((
Така че изпълнимия файл е точно същата PE модула като DLL.
Възможност за внос-износ, установена в който и да е модул като P ortable E xecutable формат.
И как може да промени една програма, която е в моя случай?
Или това е невъзможно?
Вие не може да го направи.
И не е нужно.
см. [23]
Не е неоснователен на "специфични", където "тя" е гарантирано да работи, аз предлагам да се изнасят / внос / наричаме следната процедура:
процедура MagicEXEImportExportTest;
започвам
# XA0; изход;
приключи;
> s_ # XA0; (05/04/07 16:27) [25]
> Какво направи възможно да експортирате функции в изпълнимия
> (Exe) файл. ((((
Например, за да заредена библиотека те биха могли да
достъп до тези функции чрез GetProcAddress.
Само не питай защо е необходимо.
> Как да направите изпълним # XA0; файл (Търсейки-файл) да бъдат изнесени
> Функция като в DLL. Ако е възможно да се пример. Благодаря предварително.
2Всички: Бих искал да повторя: DLL - елементарен форма
клиент-сървър технология в условията на недостиг на ресурси.
Не измъчвай старата дама, в края на краищата.
Спомням си, се интересуват от този въпрос преди една година, 2-3. резултатите от дискусията Игор Шевченко върнати присъда - в Делфи не може да го направи.
Мисля, че в Делфи можеш да направиш всичко.
Основното нещо - да има желание.
Можете да не, например, да се направи свръзката генерира Delphi премествания маса за EXE-ина.
Вие не казвате. ) А някои момчета нещо и не знам)) ..
Да, наистина, не бях прав - по подразбиране D7 IMAGE_FILE_RELOCS_STRIPPED флаг не е зададен, и по този начин RT, генерирана по подразбиране.