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 27-04-2008
mns mns is offline
Miembro
 
Registrado: feb 2008
Posts: 13
Poder: 0
mns Va por buen camino
Unhappy linker error en c++ builder 6

estoy haciendo una aplicacion cliente servidor con paradox ,
en el programa servidor me pasa que convierto varias variables AsiString
a entero , el problema es que al hacer esto y construir la aplicacion me da un error de linker error unresolved external 'StrToIntA' referenced from (ruta)/principal.obj

El problema es casi seguro que es por el RemoteModule , ya que he hecho otra aplicacion solo para probar , funciona con la base de datos y todo bien , ahora bien , intento convertir una string a entero y el error nuevamente(si es una aplicacion sin el remoteModule no lo hace .

Código:
// DATOSTABLASSIMPLESIMPL.H : Declaration of the datosTablasSimples

#ifndef datosTablasSimplesImplH
#define datosTablasSimplesImplH

#define ATL_FREE_THREADED
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <MidConst.hpp>

#include "PcNowServer_TLB.H"
#include <DB.hpp>
#include <DBTables.hpp>
#include <Provider.hpp>
#include <xmldom.hpp>
#include <Xmlxform.hpp>
#include <atl/atlvcl.h>



// Forward ref. of IAppServer implementor


/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
class TdatosTablasSimples : public TCRemoteDataModule
{
__published:  // IDE-managed Components
        TDataSetProvider *providerClientes;
        TTable *tablaClientes;
        TTable *tablaArticulos;
        TTable *tablaProveedoresDuplicados;
        TTable *tablaStock;
        TTable *tablaProveedores;
        TTable *tablaPresupuestos;
        TTable *tablaFacturasProveedores;
        TTable *tablaAbonosProveedores;
        TTable *tablaClientesDuplicados;
        TDataSetProvider *dataClientesDuplicados;
        TDataSetProvider *dataArticulos;
        TDataSetProvider *dataProveedores;
        TDataSetProvider *dataProveedoresDuplicados;
        TDataSetProvider *dataAbonosProveedores;
        TDataSetProvider *dataFacturasProveedores;
        TDataSetProvider *dataPresupuestos;
        TDataSetProvider *dataStock;
        TQuery *consultaBusqueda;
        TDataSetProvider *dataConsultaBusqueda;
        TDataSetProvider *dataTipoArticulo;
        TTable *tablaTipoArticulo;
        TTable *tablaFabricante;
        TTable *tablaModelo;
        TDataSetProvider *dataFabricante;
        TDataSetProvider *dataModelo;
        TDataSetProvider *dataVersionSoft;
        TTable *tablaVersionSoft;
        TTable *tablaFabricanteSoftware;
        TDataSetProvider *dataFabricanteSoftware;
        TDataSetProvider *dataFacturasClientes;
        TTable *tablaFacturasClientes;
        TDataSetProvider *dataAlbaranesClientes;
        TDataSetProvider *dataAbonosClientes;
        TTable *tablaAlbaranesClientes;
        TTable *tablaAbonosClientes;
private:      // User declarations
public:       // User declarations
  __fastcall TdatosTablasSimples(TComponent* Owner);

__published:
};


/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
extern PACKAGE TdatosTablasSimples *datosTablasSimples;


/////////////////////////////////////////////////////////////////////////////
// TdatosTablasSimplesImpl     Implements IdatosTablasSimples, default interface of datosTablasSimples
// ThreadingModel : Apartment
// Dual Interface : TRUE
// Event Support  : FALSE
// Default ProgID : PcNowServer.datosTablasSimples
// Description    : 
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE TdatosTablasSimplesImpl: REMOTEDATAMODULE_IMPL(TdatosTablasSimplesImpl, datosTablasSimples, TdatosTablasSimples, IdatosTablasSimples)
{
public:

BEGIN_COM_MAP(TdatosTablasSimplesImpl)
  RDMOBJECT_COM_INTERFACE_ENTRIES(IdatosTablasSimples)
END_COM_MAP()

  // Data used when registering Object 
  //
  DECLARE_THREADING_MODEL(otApartment);
  DECLARE_PROGID(_T("PcNowServer.datosTablasSimples"));
  DECLARE_DESCRIPTION(_T(""));

  // Function invoked to (un)register object
  //
  static HRESULT WINAPI UpdateRegistry(BOOL bRegister)
  {
    TRemoteDataModuleRegistrar regObj(GetObjectCLSID(), GetProgID(), GetDescription());
    // Disable these flags in order to disable use by socket or web connections.
    // Also set other flags to configure the behavior of your application server.
    // For more information, see atlmod.h and atlvcl.cpp.
    regObj.Singleton = false;
    regObj.EnableWeb = true;
    regObj.EnableSocket = true;
    return regObj.UpdateRegistry(bRegister);
  }


// IdatosTablasSimples
protected:
};

#endif  // datosTablasSimplesImplH

Última edición por mns fecha: 27-04-2008 a las 21:04:04.
Responder Con Cita
  #2  
Antiguo 27-04-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Este error tuyo, y tras comprobar que sólo aparece con el RemoteModule, me suena a conflicto entre funciones con el mismo nombre sin definir un namespace.

StrToIntA está definida en la libreria shlwapi.h.
Se define como:
Código:
 LWSTDAPI_(int)      StrToIntA(LPCSTR lpSrc); // Recibe un puntero char (char*)
En esa misma librería definen StrToInt como:
Código:
#define StrToInt     StrToIntA
Por otro lado, las VCL definen StrToInt en sysutils.hpp como
Código:
 extern PACKAGE int __fastcall StrToInt(const AnsiString S); // recibe un AnsiString.
Lo que me extraña es que no tengas un error del compilador previo al link. Doble definición...

No se como son los AnsiString que tratas de convertir a enteros, ¿son ansiString o son char*?. Trata de llamar asi a la función, forzando el cast:

Código:
 int n = StrToInt(AnsiString(Cadena));
Otra posible solución es convertir tu AnsiString a char* y usar int atoi(const char*) al estilo del C clásico:

Código:
 int n = atoi(Cadena.c_str());
Finalmente decirte que investigues la necesidad de usar namespaces para utilizar el módulo que te genera el conflicto. Mas no te puedo decir pues nunca he trabajado con él.

Espero haberte servido de alguna ayuda.

Saludos.

Última edición por escafandra fecha: 29-04-2008 a las 01:09:15.
Responder Con Cita
  #3  
Antiguo 28-04-2008
mns mns is offline
Miembro
 
Registrado: feb 2008
Posts: 13
Poder: 0
mns Va por buen camino
muchas gracias por todo
al final he usado atoi() para solucionarlo y todo bien menos mal
cuando tenga un poco mas de tiempo me pondre a buscar a ver si encuentro
el origen del fallo , pero por ahora funciona bien asi .
mil veces agradecido
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
Linker error : Problema con c++ builder waremovil C++ Builder 1 07-04-2008 11:30:01
[Linker Fatal Error] Fatal: Unable to open file 'SMI2XLS.OBJ' nera C++ Builder 0 06-09-2006 13:38:25
error de linker...LIB JuanErasmo C++ Builder 0 04-09-2006 18:16:45
Error del linker c++ builder 6 davomb C++ Builder 1 07-06-2006 18:23:03
Error linker library !!! JuanErasmo C++ Builder 2 14-12-2005 15:59:01


La franja horaria es GMT +2. Ahora son las 17:19:13.


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