• Viernes 19 de Abril de 2024, 12:25

Autor Tema:  Error Al Linkar El Programa  (Leído 1558 veces)

wimi111

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Error Al Linkar El Programa
« en: Domingo 27 de Mayo de 2007, 18:28 »
0
Hola:

He estado buscando una solucion a mi problema pero no logro encontrarla quizas pq soy algo novato en esto de la programacion asi que agradeceria la mas pequeña a yuda para poder continuar.


Estoy realizando un programa para dibujar una grafica a partir de datos recogidos por una SAD(Sistema de adquisicion de datos) de advantech PCL812PG.

Como yo no tengo ninguna tarjeta conectada al PC he instalado un driver que me deja simular esta tarjeta y poder realizar mi programa sin tenerla.

Bueno, pues una vez que compilo el programa me da los siguientes errores:

[Linker Error] Unresolved external 'DRV_DeviceOpen' referenced from D:\DOÑA\C++\PABLO\INTENTO1\UNIT1.OBJ.

[Linker Error] Unresolved external 'DRV_DeviceClose' referenced from D:\DOÑA\C++\PABLO\INTENTO1\UNIT1.OBJ.

No se exactamente a que se debe. El programa no lo tengo terminado solamente he realizado la inicializacion del driver de la Sad y la finalizacion. El codigo que tengo es el siguienteunit.cpp:

UNIT.CPP

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

#include "Unit1.h"
#include "os.h"
#include "driver.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
void ThreadMuestreo();
TMain *Main;

static LONG DriverHandle=(LONG)NULL;

//---------------------------------------------------------------------------
__fastcall TMain::TMain(TComponent* Owner)
        : TForm(Owner)
{
FlagAbierto=false;
DriverHandle=(LONG)NULL;
ErrCde = DRV_DeviceOpen(0,(LONG far*)&DriverHandle);
if(ErrCde!=SUCCESS){
        EstadoDriver->Caption="Error del driver";
        return;
}
EstadoDriver->Caption="Driver OK";
FlagAbierto=true;
}
//---------------------------------------------------------------------------



void __fastcall TMain::SalirClick(TObject *Sender)
{
ErrCde=DRV_DeviceClose((LONG far *)&DriverHandle);        
if (ErrCde!=SUCCESS){
        Application->Terminate();
        return;
        }
Application->Terminate();

}
//---------------------------------------------------------------------------

Y el codigo de UNIT.h es:

//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Chart.hpp>
#include <ExtCtrls.hpp>
#include <Series.hpp>
#include <TeEngine.hpp>
#include <TeeProcs.hpp>
//---------------------------------------------------------------------------
class TMain : public TForm
{
__published:   // IDE-managed Components
        TChart *Onda;
        TFastLineSeries *Series1;
        TButton *Salir;
        TLabel *EstadoDriver;
        void __fastcall SalirClick(TObject *Sender);
private:   // User declarations
public:      // User declarations
        __fastcall TMain(TComponent* Owner);

        bool FlagAbierto; // control de inicializacion del driver
        long ErrCde;

        };
//---------------------------------------------------------------------------
extern PACKAGE TMain *Main;
//---------------------------------------------------------------------------
#endif

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Error Al Linkar El Programa
« Respuesta #1 en: Domingo 27 de Mayo de 2007, 18:48 »
0
Los errores se deben a que no encuentra esas dos funciones al enlazar, si tenes la biblioteca de importacion (archivo .lib) que sirva para el Builder podes enlazar estaticamente. Sino proba usando enlace dinamico (LoadLibrary + GetProcAddress).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

wimi111

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Error Al Linkar El Programa
« Respuesta #2 en: Domingo 27 de Mayo de 2007, 22:20 »
0
Muchas gracias.

Podrias orientarme como hacerlo yo tengo instalado el C++Builder 4.

Un saludo

wimi111

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Error Al Linkar El Programa
« Respuesta #3 en: Lunes 28 de Mayo de 2007, 14:37 »
0
Como podría reañizar ese enlace estático? o en su defecto el dinámico.

Un saludo y gracias por todo.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Error Al Linkar El Programa
« Respuesta #4 en: Lunes 28 de Mayo de 2007, 15:07 »
0
Para el enlace estatico necesitas el .lib correspondiente y para el dinamico usar las funciones que te nombre anteriormente:

LoadLibrary
GetProcAddress
Ejemplo

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.