![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Библиотеки на С++ для Дельфи. [D6, XP]
Drowsy © (2009-02-05 01:25:00)Можно на С++ создать библиотеку, которую можно будет в Дельфи использовать?
Drowsy (2009-02-06 20:09:00) [1]В блокноте такой кусок встречается:
....
\x1 MyDll.dll @Mess$qv ___CPPdebugHook
.......
Ega23 (2009-02-06 19:29:00) [2]
> А как это сделать?
Да тупо HEX-Editor'ом открой. Или блокнотом и имя функции найди.
Drowsy (2009-02-06 19:22:00) [3]
> Посмотри, в каком виде у тебя прописалась данная функция
> в DLL.
А как это сделать?
Ega23 (2009-02-06 14:43:00) [4]О! Ещё одну штуку вспомнил.
Посмотри, в каком виде у тебя прописалась данная функция в DLL. Как-то раз наткнулись, что если какую-то сишную директиву не выставить, то к имени функции какой-то мусор добавляется, типа вместо "MyFunc" внутри dll сидит "MyFunc__%"
Сергей М. (2009-02-06 14:38:00) [5]Откажись на время от стат.загрузки, грузи библ-ку в динамике.
О результатах доложись.
Drowsy (2009-02-06 12:47:00) [6]И с рантайм и без один и тот же эффект.
Drowsy (2009-02-06 12:43:00) [7]Наверное из-за too many consecutive exceptions
Сергей М. (2009-02-06 12:42:00) [8]Стек загажен
Drowsy (2009-02-06 12:42:00) [9]... и ещё, если всё оставить, а убрать вызов Mess(), то работает.
Drowsy (2009-02-06 12:39:00) [10]Ага, сейчас попробую.
(Кстати, может это о чём-то подскажет:
В окне CPU, при трассировке, ошибку вываливает при выполнении
ntdll.RTLunwind. )
Сергей М. (2009-02-06 12:35:00) [11]
> Drowsy (06.02.09 12:32) [39]
Загляни в опции обоих проектов на закладку Pakages, там д.б. крыжик - сними его и там и здесь, после чего пересобери оба проекта и повтори трассировку
Сергей М. (2009-02-06 12:33:00) [12]
> Ega23 © (06.02.09 12:30) [38]
В дан.случае фиолетово - до собственно вызова, судя по [31], дело не додит
Drowsy (2009-02-06 12:32:00) [13]С готовностью.
Только я не понимаю, что значит "собери без рантаймов" -
убрать библиотеку с убогой функцией вообще?
Тогда кроме голой формы ничего не останется. :)
Ega23 (2009-02-06 12:30:00) [14]Почему stdcall? Где он явно указан в сишной части?
ЕМНИП, там по-умолчанию cdecl используется (хотя тоже не факт).
stdcall у тебя и в приложении должно фигурировать, и в библиотеке.
Сергей М. (2009-02-06 12:28:00) [15]Для начала собери оба проекта без использования рантайм-пакетов, потом будем обсуждать
Drowsy (2009-02-06 12:26:00) [16]Только stdcall добавил, но это ничего не изменило:
procedure Mess(); stdcall; external 'MYDLL.dll' name 'Mess';
Drowsy (2009-02-06 12:24:00) [17]Drowsy (06.02.09 09:14) [12]
Drowsy (2009-02-06 12:22:00) [18]В С++ билдере всё же идёт...
Сергей М. (2009-02-06 12:22:00) [19]А где текст юнита, в котором фигурирует Mess() ?
Drowsy (2009-02-06 12:20:00) [20]Может какие директивы компилятору нужны или опции линка???