FastMM не устанавливается при запуске приложения с DLL - PullRequest
0 голосов
/ 15 ноября 2018

Я использую Windows 10 с C ++ Builder XE4 и FastMM 4.991.Я работаю с 32-битными приложениями VCL.Когда мое приложение включает вызов функции DLL, я получаю сообщение об ошибке, в котором говорится, что FastMM не может быть установлен.FastMM работает нормально в приложениях, которые не включают в себя вызов каких-либо функций DLL.

Мои DLL создаются как C ++ VCL Dlls.Я попытался скомпилировать DLL с компонентами FastMM и установил параметры FastMM «ShareMM» и «AttemptToUseShareMM».Я бы предпочел не компилировать FastMM в DLL, потому что меня интересует только отладка основного exe-файла.

Ниже приведен код из моей основной формы, который имеет один простой вызов функции DLL.Должно быть, я неправильно настроил DLL или неправильно установил параметры FastMM.Существуют ли инструкции для правильной настройки DLL с помощью FastMM в Delphi или C ++ Builder?

//------------------------
#include <vcl.h>
#pragma hdrstop

#include "MyUnit1.h"
#include "FastMM4.hpp"
#include "FastMM4Messages.hpp"

#define DLL_EXP __declspec(dllexport)

extern short DLL_EXP IsDateRangeValid( int Date );

//---------------------------
#pragma package(smart_init)
#pragma link "FastMM4BCB"
#pragma resource "*.dfm"
TMainForm1 *MainForm1;
//----------------------------------
__fastcall TMainForm1::TMainForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//--------------------------

void __fastcall TMainForm1::Button1Click(TObject *Sender)
{
  short Rtrn=0;
  int MyDate=0;

  //Call to a DLL function block FastMM from Loading
  Rtrn = IsDateRangeValid( MyDate ); //<---
  ShowMessage(IntToStr(Rtrn));
}
//------------------------------------

// --- Сообщение об ошибке FastMM ---

Невозможно установить FastMM4, так как другой сторонний менеджер памяти уже установил себя.Если вы хотите использовать FastMM4, убедитесь, что PastMM4.pas является самым первым модулем в разделе «пользователи» файла .dpr вашего проекта.

...