000
13.12.2003, 14:22 Uhr
~Michael L.
Gast
|
Hi, schon wieder ich. Ich hoffe das ist erst einmal das letzte posting.
Also ich habe mir eine DLL in VB geschrieben (hoffe ich, habe davon wenig Ahnung.)
Visual Basic: |
Private Function GetFilePath(str As String) As String
Dim ts As TSCoreBLL.TSBLLFile5 Dim sp As String Dim servername As String Dim db As String Dim tsid As Long Dim inst As Long Dim fol As Long Dim spath As String Dim rs As Recordset Dim ma As Variant Dim filename As String
Set ts = CreateObject("TSCoreBLL.TSBLLFile5")
sp = Command
Text1.Text = sp
ts.DecodeMoniker sp, servername, db, tsid, inst, fol, spath
ts.ListPhysicalFiles "", tsid, True, False, False, rs
GetFilePath = rs.Fields("Path").Value
Set ts = Nothing
End Function
|
Die kann auch ohne Fhler erstellt werden (ActiveX DLL)
Nun wollte ich die in eines meiner VC++ Programme einbinden (Bin dabei nach www.codeproject.com/dll/vbactivexwithvc.asp?target=VB gegangen)
Habe bei mir in StdAfx.h folgendes ergänzt
C++: |
#import "TerraShareDLL.dll" using namespace Project1;
|
Und nun wollte ich eine Funktion schreiben die diese DLL nutzt.
C++: |
CString getFiePathFromMoniker(CString moniker) { // initalisierungen HRESULT hresult; CLSID cls; // Com Library initalisieren CoInitialize(NULL); // retrieve CLSID der Komponente hresult = CLSIDFromProgID(OLESTR("TerraShareDLL.dll"),&cls);
// Instanz der Komponente anlegen Utilities* ts; // CLSCTX_INPROC_SERVER -> DLL im selben Adressbereich hresult = CoCreateInstance(cls,NULL,CLSCTX_INPROC_SERVER,__uuidof(Utilities),(LPVOID *) &ts); // Ergebnis abfragen if(FAILED(hresult)) { TRACE("getFiePathFromMoniker(CString moniker):cant create Instance"); return ""; } // FilePath besorgen CString tmp = ts->GetFilePath(moniker); // aufräumen ts->Release(); return tmp;
}//getFilePathFromMoniker
|
Allerdings bekomme ich beim erstellen den Fehler : \\Ipi143\TSSDK-Projects\TerraShare C++\ExtractBildArea\funktion.cpp(25) : error C2027: Verwendung des undefinierten Typs "Utilities"
Aber weder die Funktion ist falsch geschreiben. noch heißt die Klasse anders. (ist doch was hinter (Name) steht oder?)
Ich hoffe ich habe nichts vergessen. Wäre super wenn jemand einen Tipp hat (Das Projekt und die DLL kann man auch unter www.magicfire.da.ru/Datein/Projekt.rar bekommen, und keine Angst ist nur was gnaz kleines)
Danke für alle die mir (schon wieder) helfen
mfg Michael |