Einbinden in Borland C++ Builder 5.0
Notwendige Dateien:
- TcAdsDll.dll - Dynamische Funktions-Bibliothek
- TcAdsApi.h - Deklarationen der Ads-Funktionen (C++ Headerdatei)
- TcAdsDef.h - Deklarationen der Strukturen und Konstanten (C++ Headerdatei)
Die TcAdsDll.dll befindet sich im ‚System32'-Verzeichnis von Windows. Die TcAdsApi.h und TcAdsDef.h befinden sich im ..\ADS Api\TcAdsDll\Include-Verzeichnis von TwinCAT.
Notwendige Tools:
- Borland C++ Builder 5.0
- IMPLIB.EXE - generiert eine neue Import-Library TcAdsDLL.Lib aus der TcAdsDll.dll
Bemerkung
Die mit der TwinCAT -Installation mitgelieferte Library-Datei: TcAdsDll.lib kann aus Kompatibilitäts-Gründen nicht in Borland C++ Builder Projekten eingebunden und kompiliert werden. Beim Versuch, diese Lib zu linken, bekommt man folgende Fehlermeldung:
[Linker Error]
'E:\BORLAND\CBUILDER5\PROJECTS\SAMPLE1\TCADSDLL.LIB'
contains invalid OMF record, type 0x21 (possibly COFF)
Mit dem Borland-Utility: IMPLIB.EXE kann eine neue Library aus der TcAdsDll.dll generiert werden. Diese kann dann fehlerfrei kompiliert und gelinkt werden. IMPLIB.EXE befindet sich standardmäßig in dem Borland ...\Bin - Verzeichnis. Benutzen Sie dafür folgendes Kommando auf dem DOS-Prompt:
IMPLIB -a TcAdsDll
TcAdsDll.dll
Mit dem Schalter -a werden Microsoft-Kompatible Aliasnamen für die Dll-Funktionen generiert.
Für die Aufzählungstypen (Enums) in der TcAdsDEF.h müssen 4 Bytes (32 Bits) Speicher alloziert werden. Stellen Sie sicher daß unter den Projekt->Optionen auf dem Kompiler-Reiter folgende Option angewählt ist: "Treat enum types as ints":
Um auf die DLL-Funktionen zugreifen zu können müssen die beiden Header-Dateien in das Borland C++ Builder Projekt eingebunden werden. Z. B.:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "c:\TwinCAT\ADS Api\TcAdsDll\Include\TcAdsDEF.h"
#include "c:\TwinCAT\ADS Api\TcAdsDll\Include\TcAdsAPI.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
Die TcAdsDll.Lib kann über das Menue Project->Add to project... dem Projekt hinzugefügt werden.