Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создать DLL, Помогите нлвичку 
:(
    Опции темы
Teran
  Дата 21.12.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

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



мне нужно создать dll в Visual C++ 6.0  а использовать ее в Delphi
Подскажите как...?
Вот пльзуясь стандартным мастером создаю:
cpp
Код

#include "stdafx.h"
#include "SpyFound.h"

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

// This is an example of an exported variable
SPYFOUND_API int nSpyFound=0;

// This is an example of an exported function.
SPYFOUND_API int fnSpyFound(void)
{
    return 42;
}

// This is the constructor of a class that has been exported.
// see SpyFound.h for the class definition
CSpyFound::CSpyFound()
{ 
    return; 
}

h
Код

#ifdef SPYFOUND_EXPORTS
#define SPYFOUND_API __declspec(dllexport)
#else
#define SPYFOUND_API __declspec(dllimport)
#endif

// This class is exported from the SpyFound.dll
class SPYFOUND_API CSpyFound {
public:
    CSpyFound(void);
    // TODO: add your methods here.
};

extern SPYFOUND_API int nSpyFound;

SPYFOUND_API int fnSpyFound(void);

вот так чочу использовать:
Код

type
 TExecDialog=function():Integer; stdcall;

procedure TForm1.Button1Click(Sender: TObject);
var
  ExecDialog:TExecDialog;
  HLib:THandle;
  ret:Integer;
begin
  HLib:=0;
  try
    HLib:=LoadLibrary('SpyFound.dll');
    if HLib>HINSTANCE_ERROR then begin
      ExecDialog:=GetProcAddress(HLib,'fnSpyFound');
      if Assigned(ExecDialog) then begin
         ret:=ExecDialog();
      end;
    end;
  finally
    if HLib>HINSTANCE_ERROR then FreeLibrary(HLib);
  end;
end;

но ничего не получается ExecDialog:=GetProcAddress(HLib,'fnSpyFound'); возвращает NULL и все тут
как быть подправте пожалуйста?

Если можно дайте какой-нибудь пример.

Это сообщение отредактировал(а) Teran - 21.12.2006, 17:20


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
VectorMan
Дата 21.12.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antihero
*


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

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



Teran, линкер у тебя экспортирует декорированные имена функций
либо используй def файл, чтобы явно указать имя, либо узнай под каким именем экспортируется функция и вызывай GetProcAddress с соответствующим аргументом.
PM   Вверх
Любитель
Дата 23.12.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



 smile Обсуждалось много раз! Ну хоть ради очитски совести поиск юзайте!


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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