Экспорт одной и той же функции DLL под несколькими именами
Я сделал несколько функций в моей DLL, например:
procedure DoThis(A: PChar): Boolean; stdcall;
begin
f := TFileStreamCreate(A, fmCreate);
f.read()
f.free;
end;
затем я экспортировал его под 2 именами:
export
DoThis,
DoThis name 'DoThat';
В большинстве случаев это "переименование" работает. Но по крайней мере в одном случае переименованная функция "DoThat" считывает данные не из реального файла, а из пустоты. Если я вызываю DoThis для того же файла, он прекрасно работает. Я удалил все утечки памяти благодаря FastMM4 (преобразовал код в обычное консольное приложение)
Итак, вопрос:
Разве это "переименование" не разрешено?
Если это законно - могу ли я отлаживать DLL с FastMM4, не превращая ее в консольное приложение?
1 ответ
То, что вы описываете в вопросе, не соответствует действительности.
Разве это "переименование" не разрешено?
Экспортировать одну и ту же функцию под несколькими именами вполне законно. Проблем, которые вы описываете, не бывает.
Можно ли отладить DLL с помощью FastMM4, не превращая ее в консольное приложение?
Да, ты можешь. Укажите хост-приложение в диалоговом окне "Параметры запуска", и вы сможете отлаживать свою DLL.