Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-06-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Error al compilar con constructor y destructor de clase

Hola amigos, sigo con la misma clase la cual estaba hecha en C++builder 6 y conseguí hacer que funcione bien pero claro, al pasarlo a Rio la convertí a WideString porque ese proyecto me funcionaba bien pero si queria crear un nuevo proyecto me daba errores por ser en AnsiString. Pues bien, la he pasado a WideString todo lo que molestaba y ahora al compilar me suelta estos errores:
Código:
[ilink32 Error] Error: Unresolved external 'operator new(unsigned int, std::align_val_t)' referenced from C:\USERS\AGUSTIN\DESKTOP\PRUEBA ATACHEO CON CLASE TDEBUGGER X32 W10 BY AGUML__\WIN32\DEBUG\UNIT1.OBJ
[ilink32 Error] Error: Unresolved external 'operator delete(void *, std::align_val_t)' referenced from C:\USERS\AGUSTIN\DESKTOP\PRUEBA ATACHEO CON CLASE TDEBUGGER X32 W10 BY AGUML__\WIN32\DEBUG\UNIT1.OBJ
[ilink32 Error] Error: Unable to perform link
Los errores los da en estas lineas ya que si las comento ya compila pero no funciona, claro jejeje.
Código PHP:
Depurador  = new TDebugger(); 
y:
Código PHP:
delete Depurador
El caso es que el antiguo proyecto era de C++Builder 6 y lo converti a esta version al intentar abrirlo ya que me preguntó y le dije que si. Ahora lo que hice fue crear un nuevo proyecto y sustituir los archivos de proyecto del antiguo proyecto por los del nuevo y volví a añadir los archivos de la clase pero me da esos errores.
en TDebugger está así:
Código PHP:
class TDebugger
{
    public:
        
// un poquito de orden aqui solo los métodos, las funciones abajo
        
TDebugger();
        ~
TDebugger(); 
Código PHP:
TDebugger::TDebugger()
{
    
LPVOID hToken=NULL;
    
TOKEN_PRIVILEGES MisPrivilegios;

    if(
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken)== true){
        if(
LookupPrivilegeValue(NULL,L"SeDebugPrivilege",&MisPrivilegios.Privileges->Luid)==true){
            
MisPrivilegios.PrivilegeCount=1;
            
MisPrivilegios.Privileges->Attributes=SE_PRIVILEGE_ENABLED;
            
AdjustTokenPrivileges(hToken,false,&MisPrivilegios,0,NULL,NULL);
        }
    }

    if( 
hToken != NULL){
        
CloseHandle(hToken);
    }

    
// Inicialización para estar tranquilo
    
SetOnSystemBreakPoint(NULL);
    
SetOnAtachBreakPoint(NULL);
    
SetOnEntryPoint(NULL);
    
SetOnBPs(NULL);
    
SetOnException(NULL);
    
SetOnCreateProcess(NULL);
    
SetOnExitProcess(NULL);
    
SetOnCreateThread(NULL);
    
SetOnExitThread(NULL);
    
SetOnLoadDll(NULL);
    
SetOnUnLoadDll(NULL);
    
SetOnOutPutString(NULL);
    
SetOnRIP(NULL);
    
SetOnSingleStep(NULL);
    
SetOnHBPs(NULL);
    
SetOnMemoryBPs(NULL);
    
SetOnInitLoopDebug(NULL);
    
SetOnExitLoopDebug(NULL);

    
DebugExists false;  // variable que indica si se está en depuración
    
HiloDepuracion NULL;
    
AntiAntiDebug NULL;
}
//---------------------------------------------------------------------------

TDebugger::~TDebugger()
{
    if(
HiloDepuracion != NULL){
        
TerminateDebug();
    }

    
//La memoria del evento debe de borrarse cuando ya no vayamos a usarlo para nada
    //Este solo se le asigna memoria al iniciar la aplicacion
    
if(THiloDebugger::EventHiloArmado != NULL){
        
delete THiloDebugger::EventHiloArmado;
        
THiloDebugger::EventHiloArmado NULL;
    }
}
//--------------------------------------------------------------------------- 
¿Podeis ayudarme?
Responder Con Cita
  #2  
Antiguo 09-06-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
He probado creando un proyecto nuevo y añadir la clase y puse solo esto:
Código PHP:
#include <vcl.h>
#include "TDebugger.h"
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponentOwner)
    : 
TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    
TDebugger *Depurador = new TDebugger();
    
delete Depurador;

}
//--------------------------------------------------------------------------- 
Y me sigue pasando lo mismo.
Pongo el enlace al proyecto por si quereis verlo a ver si podeis ver el fallo porque no tengo ni idea de que puede estar pasando:
https://mega.nz/file/UwUXkYwQ#58zdeW...O3kMDPd40mabhU
Responder Con Cita
  #3  
Antiguo 09-06-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Lo he podido solucionar. Por lo visto es otro bug de RAD 10.3 Rio. Encontré esta info: https://quality.embarcadero.com/plug...ssue/RSP-21658
y opté por la opcion de crear un archivo como hacen ahí y funcionó:
Código PHP:
// new_del_align.cpp
 
#include <alloc.h>
 
namespace std {
  
enum class align_val_t std::size_t {};
  
typedef unsigned int size_t;
}  
 
voidoperator new(std::size_t countstd::align_val_t al) {
  return 
_aligned_malloc(countstatic_cast<std::size_t>(al));
}
 
void operator delete(voidptrstd::align_val_t alnoexcept {
  
_aligned_free(ptr);

Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con constructor de clase ramonigimenez OOP 6 08-02-2019 19:07:11
Error System.types or Constructor Found jorelivi Varios 3 18-10-2016 20:57:04
Problemas con el constructor de una clase Ledian_Fdez C++ Builder 1 05-04-2010 12:59:23
Implementar el constructor de una clase Alcolea OOP 2 14-06-2006 06:39:05
constructor y destructor gustavo2 OOP 11 23-04-2004 20:23:20


La franja horaria es GMT +2. Ahora son las 18:40:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi