Как использовать библиотеку DLL, которую я создал в VB.NET в приложении delphi
Я создал довольно простую библиотеку dll в vb.net-да. Я успешно зарегистрировал его (от имени администратора) и можете вызвать его из кнопку в простой vb.net приложения WinForms приложение, которое я создал. Это работает. Он делает то, что я ожидаю. Однако я попытался использовать его в простом приложении Delphi, которое я также создал, и оно говорит, что не может его найти.
Спасибо,
Птичий
- Windows 10 Pro 64 бит
- Против 2017 года
- Дельфи Токио 10.2.3
Что я уже пробовал:
Мой код Delphi:
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxLookAndFeels, cxLookAndFeelPainters, Vcl.Menus, Vcl.StdCtrls, cxButtons; Function CreateExcelWorkbook: boolean; STDCALL; EXTERNAL 'KTExternalFunctions.dll'; type TForm1 = class(TForm) cxButton1: TcxButton; procedure cxButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.cxButton1Click(Sender: TObject); begin CreateExcelWorkbook; end; end.
Код Delphi компилируется но когда я пытаюсь его запустить я получаю это сообщение об ошибке:
"Выполнение кода не может продолжаться из-за KTExternalFunctions.dll не была найдена. Переустановка программы может устранить эту проблему."
Все, что я читал об этом, говорит о том, что я правильно ссылаюсь на него в своем предложении uses.
Единственная разница, которую я вижу, заключается в том, что когда я вызываю DLL в своем vb.net приложение я должен квалифицировать его с помощью класса, в котором содержится функция, например (где KTFunctions-это имя класса):
Imports System.Drawing Imports DevExpress.Spreadsheet Imports KTExternalFunctions Public Class XtraForm1 Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click KTFunctions.CreateExcelWorkbook()
Я не могу найти никаких примеров этого для Delphi и не уверен, как это сделать, или даже если это вся проблема.
Gerry Schmitz
Вы пробовали поместить свою "новую" dll в ту же папку, из которой вы запускаете свой Delphi exe?
avianrand
Да. Я действительно пытался это сделать. Я также попытался добавить путь к папке выпуска dll в объявление функции в Delphi. Ни то, ни другое не сработало. Я уверен, что я что-то испортил с тем, как я создаю dll или как я ее регистрирую. Я тоже попробовал его в качестве кома, но это ничего не дало. Я зарегистрировал его с помощью RegAsm.exe но даже если он не зарегистрирован он все равно работает когда я вызываю его из своего теста vb.net приложение, так что я не уверен, что происходит. Я ни в коем случае не специалист по dll. Мне нужно сделать что-то в .net, что я могу запустить из Delphi, потому что это не может быть сделано в Delphi.