Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспорт функции из Delphi dll в Visual C++, нужна помощ 
:(
    Опции темы
q0a0z0w0s0x
  Дата 26.3.2008, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.3.2008

Репутация: нет
Всего: нет



Доброго времени суток!
Уважаемые программисты помогите найти решение следующей проблемы:

Есть dll написанная на Delphi, в ней две экспортируемые функции:


Код

library Project1;

uses ShareMem, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, {..} StdCtrls, 

ComCtrls;

{$R *.res}

Function HashF(Fname :string) :String; export; stdcall;
begin
 {..}
end;

Function Crypt_file(inFname,outFname,password :String; algNum :integer) :Boolean; export; stdcall;
begin
 {..}
end;

exports Crypt_file, HashF;

begin
end.




В Visual C++ 9.0 создаю новый проект CLR, Windows Forms Application,  и по нажатию кнопки необходимо использовать 

функции из dll. 
Помогите кто чем может (-:
PM MAIL   Вверх
Dennnis
Дата 26.3.2008, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

Репутация: нет
Всего: 4



Код

class MyDllImport
{
public:

[DllImport("your_dll.DLL",EntryPoint="HashF", CharSet=CharSet::Ansi,ExactSpelling=true, CallingConvention=CallingConvention::StdCall)]
static String^ HashF(String^ Fname);


[DllImport("your_dll.DLL",EntryPoint="Crypt_file", CharSet=CharSet::Ansi,ExactSpelling=true, CallingConvention=CallingConvention::StdCall)]
static bool Crypt_file(String^ inFname, String^ outFname, String^ password, int algNum);

};


Это сообщение отредактировал(а) Dennnis - 26.3.2008, 18:28
--------------------
Get Rich or Die Tryin'
PM   Вверх
q0a0z0w0s0x
Дата 26.3.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.3.2008

Репутация: нет
Всего: нет



Dennnis, не могу понять, куда этот код вставить, чтобы можно было просто использовать в любой части программы 
String^ HashF(String^ Fname);

напиши хотябы чуть подробнее... 
PM MAIL   Вверх
Rififi
Дата 26.3.2008, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 2
Всего: 36



а что, .net знает про такое чудо как delphi? :eek: и прямо так и маппит егонные стринги в свой System.String?
PM MAIL   Вверх
Dennnis
Дата 26.3.2008, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

Репутация: нет
Всего: 4



Использовать можно ну например так:
Код

#pragma once
namespace FormApplication1 {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace System::Runtime::InteropServices;//Не забудь - сдесь лежит DllImportAttribute

    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
        }
        //Импорт
        [DllImport("your_dll.DLL",EntryPoint="HashF", CharSet=CharSet::Ansi,ExactSpelling=true, CallingConvention=CallingConvention::StdCall)]
        static String^ HashF(String^ Fname);

        [DllImport("your_dll.DLL",EntryPoint="Crypt_file", CharSet=CharSet::Ansi,ExactSpelling=true, CallingConvention=CallingConvention::StdCall)]
        static bool Crypt_file(String^ inFname, String^ outFname, String^ password, int algNum);

    //Использование
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
                 String^ str = gcnew String("Hello, world");
                 HashF(str);
             }
        ...
    };
}



Цитата

а что, .net знает про такое чудо как delphi? :eek: и прямо так и маппит егонные стринги в свой System.String? 

А почему нет smile 

Это сообщение отредактировал(а) Dennnis - 26.3.2008, 23:48
--------------------
Get Rich or Die Tryin'
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0487 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.