Собственно вопрос: как поместить ссылку на свою функцию в таблицу экспорта?
Не он, скорее ты)Может ты экспорт с импортом перепутал?
У линкера link.exe есть параметр /def:имя_файла
Думаю, если сначала заменить vb-шный линкер своей программой, которая будет вызывать настоящий линкер с этим параметром и передавать свой def-файл, то все будет ok.
Ну мало ли зачем. Хочет человек не ActiveX, а Native DLL сделать. Либо просто для интереса.
#Compile Dll "test.dll"
Function ExportFunction Alias "ExportFunction" (ByVal p As String) Export As String
MsgBox p
End Function
Private Declare Function ExportFunction Lib "test.dll" Alias "ExportFunction" (ByVal p As String) As String
jangle писал(а):Да велика у наших людей страсть к мазохизму! Ты забыл еще добавить, что скомпилированную таким образом DLL можно вызвать только из VB. Из любого друго компилятора - не получится, значит пользователи Дельфи и VC++ идут лесом.
Топики про создание нативных DLL на этом форуме уже были. И линкер подменяли, и что угодно. Эка невидаль...
З.Ы. почто в названии топика упоминается exe-шник? Автор опечатался?
!Viper! писал(а):Насчет мазохизма... Оно конечно да, но вот тут проблема создания Native DLL очень подробно обсуждена и многие подводные камни успешно ликвидированы. Так что все можно сотворить
Может, но зачем экзешнику эспорт?
Насчет мазохизма... Оно конечно да, но вот тут проблема создания Native DLL очень подробно обсуждена и многие подводные камни успешно ликвидированы. Так что все можно сотворить
#Compile Exe "test.exe"
#Dim All
Declare Function Msg Lib "test.exe" Alias "F1" (ByVal p As String) As Long 'Импортируем функцию F1 из test.exe
Function F1 Alias "F1" (ByVal p As String) Export As Long
MsgBox p
End Function
Function PBMain () As Long
Msg "HELLO" 'Вызываем собственную функцию через секцию экспорта
End Function
procedure [ProcName]
begin
...................
end;
EXPORTS
[ProcName];
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 113