Я использую 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 вашего проекта.