Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2014, 19:35   #1
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию Экспорт dll (c++) в delphi

Знаю что такое уже есть но у меня немного другой расклад и не как не могу разобраться, гугл не спасает. Постоянно вылетает ошибка чтения памяти. Пытаюсь экспортировать функцию из dll которая уже инжектирована в процесс (нужно для работы функции).
Код:
void _cdecl InitCH()
{
	CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)InitCPFunk, NULL, 0, 0); // собственно создается поток функции
}
Код:
const
  lib_name = 'mу.dll';

  procedure InitCH();cdecl;
  procedure InitCH();cdecl; external lib_name;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  InitCH();
end;
Вылетает ошибка
Изображения
Тип файла: png Screenshot_1.png (7.9 Кб, 65 просмотров)
Mik92 вне форума Ответить с цитированием
Старый 05.11.2014, 20:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
procedure InitCH();cdecl;
procedure InitCH();cdecl; external lib_name;
А почему дважды?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2014, 20:22   #3
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А почему дважды?
Тестировал по разному, видимо чего то не хватает просто.
Mik92 вне форума Ответить с цитированием
Старый 05.11.2014, 20:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сделай пустую процедуру в библиотеке - будет она сбоить?
И убери лишний InitCH()
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2014, 20:35   #5
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Сделай пустую процедуру в библиотеке - будет она сбоить?
И убери лишний InitCH()
В том то и дело что вообще никак не пускает меня на форму. При запуске сразу ошибка. Словно программа подгружает длл в себя но по сути должна грузить экспортируемую функцию. Пробовал подгружать длл при нажатии на кнопку а после выполнение вызова - тоже ошибка но немного другая. Я что то в коде набуровил, по другому никак это не объяснить.
Mik92 вне форума Ответить с цитированием
Старый 05.11.2014, 21:09   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты сделал пустую функцию? Проверил ее без вызова CreateThread() ?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2014, 21:28   #7
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты сделал пустую функцию? Проверил ее без вызова CreateThread() ?
Без вызова инжектил .dll то что я хотел то работает. Проблема в самом вызове
Mik92 вне форума Ответить с цитированием
Старый 06.11.2014, 01:28   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Mik92 Посмотреть сообщение
Без вызова инжектил .dll то что я хотел то работает. Проблема в самом вызове
Пора приложить тестовый проект к сообщению. Иначе это разговор слепого с глухим.
northener вне форума Ответить с цитированием
Старый 06.11.2014, 10:11   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ваша DLL от других не зависит?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.11.2014, 18:28   #10
Mik92
Пользователь
 
Регистрация: 25.08.2014
Сообщений: 87
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ваша DLL от других не зависит?
Dll использует Direct3D (после инжекта используется хук) но думаю что это не как не может помешать вызову. Тот поток который я пытаюсь вызвать должен что то сделать в приложении в котором dll была внедрена.

Последний раз редактировалось Mik92; 06.11.2014 в 18:46.
Mik92 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C#, DLL, Экспорт процедур. Air C# (си шарп) 4 28.03.2013 23:58
Экспорт функции из DLL для дальнейшей статической загрузки в Delphi The SCS Общие вопросы C/C++ 1 01.07.2012 18:28
DLL экспорт sexsex Общие вопросы Delphi 6 25.02.2012 12:14
Экспорт из *.dll BingoBongo Общие вопросы Delphi 8 09.05.2011 13:28
экспорт в dll varelik Общие вопросы Delphi 3 13.01.2010 11:30