C++API für Lotus Notes und Linker Error
-
Hallo,
wollte die C++Api für Lotus von IBM einbauen.Habe ganz simple Code:
#include <vcl.h>
#pragma hdrstop#include "Unit1.h"
#include "lnglobal.h"
#include "lnsessio.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent Owner)
: TForm(Owner)
{
LNNotesSession notess;}
bei Linken kommt die Meldung:
[Linker Fehler] Error: Ungelöste externe 'LNNotesSession::operator delete(void *)' referenziert von C:\PROJEKTE\DOMINO1\DEBUG_BUILD\UNIT1.OBJ
[Linker Fehler] Error: Ungelöste externe 'LNNotesSession::~LNNotesSession()' referenziert von C:\PROJEKTE\DOMINO1\DEBUG_BUILD\UNIT1.OBJ
[Linker Fehler] Error: Ungelöste externe 'LNDelete(void *)' referenziert von C:\PROJEKTE\DOMINO1\DEBUG_BUILD\UNIT1.OBJ
[Linker Fehler] Error: Ungelöste externe 'LNNotesClass::~LNNotesClass()' referenziert von C:\PROJEKTE\DOMINO1\DEBUG_BUILD\UNIT1.OBJ
[Linker Fehler] Error: Ungelöste externe 'LNString::~LNString()' referenziert von C:\PROJEKTE\DOMINO1\DEBUG_BUILD\UNIT1.OBJ
[Linker Fehler] Error: Ungelöste externe 'LNSmartPtr::DeleteBody()' referenziert von C:\PROJEKTE\DOMINO1\DEBUG_BUILD\UNIT1.OBJIch weiss, da gibts schon Berichte im Forum, die das Thema behandeln. Aber
ich kriege das nicht hin oder verstehe was falsch.
Habe schon versucht die Libs dem Projekt hinzufügen, ohne Erfolg.
Auch implib hat nicht viel mehr gebracht.
Für jede Hilfe dankbar.MfG bo
-
Hallo,
Die Linker-Meldungen zeigen ja, dass hier Libs fehlen. Was für Probleme hattest du mit dem Einbinden, implib etc.?
-
Habe die Libs mittels coff2omf umgewandelt. Sind zwar nur ein Fünftel so gross
wie vorher, aber ich gehe davon aus, es ist korrekt. Mit Projekt->Dem Projekt hinzufügen habe ich die notescpp/notes.lib and notescpp/notescpp.lib addiert.
In Optionen unter Compiler- und Linkerpfade stehen entsprechend die notescpp/lib/mswin32 und notescpp/include auf den ersten Stellen. Die lcppn30i.dll steht im notescpp/lib/mswin32.
Trotzdem kommen die Meldungen ? Was fehlt da noch ?
-
Ich seh ja gerade, dass da Klassen exportiert werden sollen.
Ich habe mal kurz in die Docu bei IBM geschaut. Wie es da aussieht ist diese API ausschließlich für MS VisualC++.
-
Ich meinte nach der Konvertierung kann man die auch in Borland anwenden.
Gibt es auch Altenativen ?
-
Hallo
Nein DLLs mit C++ Interfaces können immer nur von dem bestimmten Compiler aus benutzt werden, mit dem sie kompiliert wurden. Du müßtest also die DLL nicht mit coff2omf behandeln sondern komplett neu mit dem Builder aus dem Quellcode heraus kompilieren. Das dürfte auch nur dann gehen wenn diese DLL keine MFC-Sachen einbindet.
Du must nach einer Notes-DLL mit C-Interface (also ohne Klassen) suchen, das läßt sich von vom jedem Compiler aus einbinden.
bis bald
akari
-
Hallo akari,
ich weiss nicht ob ich das jetzt richtig verstehe. Die dll habe ich nicht konvertiert, nur die Libs. Kann ich den Code irgendwie aus der dll extrahieren ?
Was hast Du mit 'Notes-DLL mit C-Interface' gemeint, die C API ?
-
Hallo
Ob nun dll oder lib spielt keine Rolle, die lib ist nur eine Hilfsdatei für den Compiler zur DLL.
Nein aus der dll/lib kannst du auch keinen Source-Code wieder extrahieren, genausowenig wie aus einer exe. Entweder du hast den Source-Code oder nicht.Ich meine damit eine DLL dir nur C-kompatible Funktionen anbietet, ähnlich wie die WinAPI. Diese kannst du mit jedem C/C++ Compiler einbinden. Muß natürlich auch vom Hersteller kommen. Deshalb ist es besser wenn du dich auf der Homepage von Notes umzuschauen.
bis bald
akari
-
Es gibt da auch eine C-API. Die ist laut Doc auch nur für VC++. Das ließe sich aber bestimmt auch für den BCB konvertieren.
Evtl. gibt es ja schon fertige Komponenten für den BCB (oder Delphi) für sowas.