Экспорт одной и той же функции 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.

Другие вопросы по тегам