COM C++ client

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: Super-Moderators, WebDev Moderators

Απάντηση
Fwteini
Δημοσιεύσεις: 10
Εγγραφή: 21 Ιουν 2006 23:56

COM C++ client

Δημοσίευση από Fwteini » 22 Ιουν 2006 21:31

Καλησπέρα
έχω ένα πρόβλημα και ελπίζω να μπορέσει κάποιος να με βοηθήσει.
Έχω ένα COM dll και τίποτα άλλο σχετικό με αυτό και θέλω να χρησιοποιήσω τις μεθόδους του σε ένα C++ project που θα φτιάξω. Υπάρχει κάποιος εύκολος τρόπος να το κάνω? Ό,τι έχω βρει μέχρι στιγμής δεν μου έχει δώσει μια σαφή εικόνα για το τι είδους project πρέπει να δημιουργήσω. Αυτό που έχω καταλάβει είναι ότι πρέπει να ορίσω έναν δείκτη στο interface του COM και μέσω αυτού μετά θα μπορώ να καλώ τις μεθόδους του, όμως δεν έχω καταλάβει που πρέπει να είναι το dll για να το βλέπει το project μoυ και να μην χτυπάει error.
Plz αν κάποιος ξέρει ας με βοηθήσει αν είναι δυνατόν και με sample code γιατί αν δεν βρω πως να το χρησιμοποιήσω θα πρέπει να το γράψω απο την αρχή!

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

COM C++ client

Δημοσίευση από dva_dev » 24 Ιουν 2006 17:11

Το πρώτο πράγμα που χρειάζεσαι είναι να γίνει register το dll (ώστε να μπορούν να το βρούν τα windows και η εφαρμογή όπου κι αν βρίσκεται αυτό).
Εστω ότι το έχεις το dll ListCtrl.dll στο C:\Prog\Erga\

Κώδικας: Επιλογή όλων

regsvr32 C:\Prog\Erga\ListCtrl.dll
Τώρα αφού δεν ξέρεις ποιά interfaces εξάγει αυτό το dll θα πρέπει να τα βρείς από την type library που έχει ενσωματωμένη σαν resource στο dll ή από το tlb αρχείο που συνοδεύεται (αν συνοδεύεται από αυτό).

Το είδος του project που θα δημιουργήσεις δεν έχει και πολύ σημασία. Αυτό που χρειάζεται να κάνεις είναι να βάλεις CoInitialize στην αρχή και CoUninitialize στο τέλος του προγράμματος σου για να μπορείς να χρησιμοποιήσεις COM.

Σε ποιά C++ δουλεύεις;

Fwteini
Δημοσιεύσεις: 10
Εγγραφή: 21 Ιουν 2006 23:56

COM C++ client

Δημοσίευση από Fwteini » 28 Ιουν 2006 00:07

Είχε περάσει πολύς καιρός και δεν περίμενα να απαντήσει κάποιος!
Το έχω κάνει register και μπορώ να το δω με το OLE/COM Object viewer. Έχω Visual studio .NET 2003 και Visual studio 6 αλλά θα προτιμούσα να χησιμοποιήσω το .ΝΕΤ αν γίνεται.
Το είδος του project το ανέφερα γιατί ό,τι βρήκα αναφέρεται σε MFC και εγώ θέλω να δημιουργήσω Win32 application ή κάτι, όχι όμως MFC.
Το interface που έχει (αυτό που βλέπω στον OLE?COM Object Viewer) λέγεται _CLogHandler και είναι IDispatch. Κάνω CoInitialize(NULL) αλλά το πρόβλημα είναι ότι δεν μπορώ να ορίσω δείκτη στο interface. Γράφω _CLogHandler *pnt και μου βγάζει error undeclared identifier. Πρέπει να κάνω κάτι include?
Άλλα αρχεία δεν έχω. Ούτε καν documentation για τη λειτουργία του.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

COM C++ client

Δημοσίευση από dva_dev » 28 Ιουν 2006 11:47

Με το ole/com object viewer από το File|View TypeLib θα ανοίξεις το dll (ή θα ψάξεις στο δέντρο που σου βγάζει στο αριστερό κομμάτι του παραθύρου στο Type Libraries να βρείς πως είναι register το dll σου και κάνεις View αυτό).

Αφού δείς την type library θα κάνεις save As... IDL
Μετά προσθέτεις το αρχείο αυτό (πχ. ListCtrl.idl) στο project σου, και πας στα Properties του αρχείου στο Configuration Properties -> MIDL -> Output και βάζεις:
Header File = $(InputName).h (θα φτιάξει το ListCtrl.h)
IID File = $(InputName).c (θα φτιάξει το ListCtrl.c)
Type Library = $(InputName).tlb

Δοκιμάζεις να κάνεις compile για να φτιάξει τα αρχεία ListCtrl.h, ListCtrl.c και ListCtrl.tlb
Το πιθανότερο είναι να αποτύχει το compile με διάφορα errors. Για κάποιο λόγο το .idl αρχείο δεν είναι εντελώς σωστό. :evil:
Θα ανοίξεις το .idl αρχείο και στην αρχή (περίπου 10η γραμμή) έχει μια δήλωση του στύλ:

Κώδικας: Επιλογή όλων

  custom(DE77BA65-517C-11D1-A2DA-0000F8773CE9, Created by MIDL version 6.00.0361 at Sat Sep 04 22:17:25 2004)
Εδώ φταίει ότι δεν έχει εισαγωγικά στο string "Created by MIDL...."
Θα του βάλεις εισαγωγικά ώστε να γίνει

Κώδικας: Επιλογή όλων

  custom(DE77BA65-517C-11D1-A2DA-0000F8773CE9, "Created by MIDL version 6.00.0361 at Sat Sep 04 22:17:25 2004")
Ξανά compile, και τώρα πρέπει να περάσει.
:)
Τώρα πρέπει να προσθέσεις τα δύο αρχεία .h (ListCtrl.h) και .c (ListCtrl.c) που δημιουργήθηκαν. Αυτά είναι που σου χρειάζονται και περιέχουν βασικά τις C δηλώσεις των Interfaces που εξάγει το dll σου.
Βέβαια δεν είναι ακόμα εντάξει γιατί αν χρησιμοποιείς precompiled headers στο project σου θα πρέπει να πας στα properties του .c (ListCtrl.c) και να του πείς για το συγκεκριμένο αρχείο να ΜΗΝ χρησιμοποιεί.
Πας στα Properties του LictCtrl.c (Confoguration Properties -> C/C++ -> Precompiled Headers, Create/Use precompiled header = Not using Precompiled headers).

Τώρα μπορείς να κάνεις inlude το αρχείο .h (ListCtrl.h) και να το χρησιμοποιήσεις. :hammer:

π.χ.

Κώδικας: Επιλογή όλων

#include "stdafx.h"

#include <ocidl.h>
#include <objbase.h>

#include "ListCtrl.h"


int _tmain&#40;int argc, _TCHAR* argv&#91;&#93;&#41;
&#123;
	IColor* pIColor;
	OLE_COLOR color1;

	HRESULT hr = &#58;&#58;CoInitialize&#40;NULL&#41;;
	if &#40;FAILED&#40;hr&#41;&#41; return 0;

	//Δημιουργούμε ένα IColor COM Object
	hr = &#58;&#58;CoCreateInstance&#40; CLSID_Color, NULL, CLSCTX_ALL, IID_IColor, &#40;void**&#41;&pIColor&#41;;
	//Κάνουμε ότι επεξεργασία θέλουμε
	hr = pIColor->HLS2RGB&#40;OLE_COLOR&#40;12345&#41;, &color1&#41;;
	//Αφού τελειώσουμε το σκοτώνουμε
	ULONG nRefs = pIColor->Release&#40;&#41;;
#ifdef _DEBUG
		if &#40;nRefs != 0&#41;
			&#58;&#58;DebugBreak&#40;&#41;;
#endif _DEBUG

	&#58;&#58;CoUninitialize&#40;&#41;;
	return 1;
&#125;

Βέβαια επειδή τα αρχεία αυτά .h, .c που έχουν δημιουργηθεί δεν περιέχουν namespaces ίσως θα ήταν καλό (για να αποφύγεις κάποιο μπέρδεμα αργότερα, κυρίως αν χρησιμοποιείς πολλά dlls) να τα πειράξεις με το χέρι και να προσθέσεις το κατάλληλο namespace. Θέλει προσοχή όμως αν το κάνεις αυτό, να αφαιρέσεις το idl από το project ώστε να μην ξαναδημιουργήσει τα .h, .c και τα ξαναχαλάσει.

Ελπίζω να βοήθησα.
:pint:

P.S. Το ListCtrl.dll μην περιμένεις να το βρείς στον υπολογιστή σου.

Fwteini
Δημοσιεύσεις: 10
Εγγραφή: 21 Ιουν 2006 23:56

COM C++ client

Δημοσίευση από Fwteini » 28 Ιουν 2006 14:02

Εϊσαι πάρα πολύ κατατοπιστικός και σε ευχαριστώ αλλά εγώ συνεχίζω να έχω προβλήματα. Όντως το dll δεν έκανε build αλλά δεν υπάρχει κάπου η γραμμή που λες ότι πρέπει να αλλάξω ή κάτι παρόμοιο!
Επίσης έχω και ένα άλλο COM dll Το οποίο όταν προσπαθώ να το δω με το OLE/COM Object vιewer μου βγάζει Could not decompile selected item και δεν φαίνεται τίποτα. Μήπως ξέρεις γιατί;
Υπάρχει πιθανότητα να έχουν πρόβλημα τα αρχεία;
Τελευταία επεξεργασία από το μέλος Fwteini την 28 Ιουν 2006 14:19, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

COM C++ client

Δημοσίευση από dva_dev » 28 Ιουν 2006 14:17

Αν δεν σε πειράζει βάλε κάπου το .IDL να το δώ.
Το άλλο dll που δεν κάνει decompile είναι registered? Μπορείς να σώσεις το IDL του; Μπορείς να δείς τα com objects που εξάγει από κάποια άλλη γλώσσα (πχ VB ή VBA?)

Fwteini
Δημοσιεύσεις: 10
Εγγραφή: 21 Ιουν 2006 23:56

COM C++ client

Δημοσίευση από Fwteini » 28 Ιουν 2006 14:28

Το ένα idl είναι αυτό
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: LogUtility.dll

[
uuid(610CA486-8D27-4DBF-AE82-08FED3B5566B),
version(234.0),
helpstring("LogHandler")
]
library LogUtility
{
// TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");

// Forward declare all types defined in this typelib
interface _CLogHandler;

[
odl,
uuid(0E4C8B9E-8C49-4B8F-9C9E-2946DE546F6E),
version(1.0),
hidden,
dual,
nonextensible,
oleautomation
]
interface _CLogHandler : IDispatch {
[id(0x40030000), propget, helpstring("Sets the name of the log file. Default YLog.log")]
HRESULT LogFilePath([out, retval] BSTR* LogFilePath);
[id(0x40030000), propput, helpstring("Sets the name of the log file. Default YLog.log")]
HRESULT LogFilePath([in] BSTR LogFilePath);
[id(0x40030001), propget, helpstring("New file or append to existing file")]
HRESULT WriteMode([out, retval] WriteModeFlag* WriteMode);
[id(0x40030001), propput, helpstring("New file or append to existing file")]
HRESULT WriteMode([in] WriteModeFlag WriteMode);
[id(0x40030002), propget, helpstring("Delimiter between fields in the same log line")]
HRESULT Delimiter([out, retval] BSTR* Delimiter);
[id(0x40030002), propput, helpstring("Delimiter between fields in the same log line")]
HRESULT Delimiter([in] BSTR Delimiter);
[id(0x60030000), helpstring("Adds a new field in the current log line")]
HRESULT AddParameter(
[in, out] BSTR* ParamName,
[in, out] BSTR* ParamValue);
[id(0x60030001), helpstring("it is called to create a new line in log")]
HRESULT ClearParameters();
[id(0x60030002), helpstring("Writes the current line at the log file")]
HRESULT WriteLogRecord();
};

[
uuid(FE06B9A2-DCC1-4A46-B5FB-6A02A0AC6E98),
version(1.0)
]
coclass CLogHandler {
[default] interface _CLogHandler;
};

typedef [uuid(19E4BAA1-F261-4863-AE40-C68A564B4C19), version(1.0)]
enum {
NEWFILE = 1,
APPENDFILE = 2
} WriteModeFlag;
};

Fwteini
Δημοσιεύσεις: 10
Εγγραφή: 21 Ιουν 2006 23:56

COM C++ client

Δημοσίευση από Fwteini » 28 Ιουν 2006 14:31

μου βγάζει ως error το παρακάτω
\LogUtility.IDL(34): error MIDL2025 : syntax error : expecting a type specification near "WriteModeFlag"

απο το άλλο dll μπορώ να φτιάξω το .idl αλλά το μόνο που έχει μέσα είναι το μήνυμα που σου έχω πει ήδη.
Το άλλο που λες να δω τα com objects του απο άλλη γλώσσα δεν ξέρω πως να το κάνω.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

COM C++ client

Δημοσίευση από dva_dev » 28 Ιουν 2006 16:00

Το πρόβλημα του είναι ότι στη γραμμή 33 πάει να χρησιμοποιήσει μια δομή - την WriteModeFlag - την οποία δεν γνωρίζει (δηλώνεται όμως παρακάτω).

Αυτό που μπορείς να κάνεις είναι να πειράξεις το IDL αρχείο και τις γραμμές που δηλώνεται η δομή αυτή να τις μεταφέρεις πιο πάνω, ώστε όταν την χρειαστεί να τη γνωρίζει.
Οπότε θα μεταφέρεις τις γραμμές 58-62 (που ουσιαστικά δηλώνεται η δομή αυτή και γίνεται και typedef παράλληλα στο σημείο που κάνει κάποια Forward declarations (συγκεκριμένα μετά το Interface _CLogHandler;).

Το τελικό IDL σου πρέπει να έχει αυτή τη μορφή.

Κώδικας: Επιλογή όλων

// Generated .IDL file &#40;by the OLE/COM Object Viewer&#41; 
// 
// typelib filename&#58; LogUtility.dll 

&#91; 
	uuid&#40;610CA486-8D27-4DBF-AE82-08FED3B5566B&#41;, 
	version&#40;234.0&#41;, 
	helpstring&#40;"LogHandler"&#41; 
&#93; 
library LogUtility 
&#123; 
	// TLib &#58; // TLib &#58; OLE Automation &#58; &#123;00020430-0000-0000-C000-000000000046&#125; 
	importlib&#40;"stdole2.tlb"&#41;; 

	// Forward declare all types defined in this typelib 
	interface _CLogHandler; 

	// !!!! MOVED HERE !!!!
	typedef &#91;uuid&#40;19E4BAA1-F261-4863-AE40-C68A564B4C19&#41;, version&#40;1.0&#41;&#93; 
	enum &#123; 
		NEWFILE = 1, 
		APPENDFILE = 2 
	&#125; WriteModeFlag; 

	&#91; 
		odl, 
		uuid&#40;0E4C8B9E-8C49-4B8F-9C9E-2946DE546F6E&#41;, 
		version&#40;1.0&#41;, 
		hidden, 
		dual, 
		nonextensible, 
		oleautomation 
	&#93; 
	interface _CLogHandler &#58; IDispatch &#123; 
		&#91;id&#40;0x40030000&#41;, propget, helpstring&#40;"Sets the name of the log file. Default YLog.log"&#41;&#93; 
		HRESULT LogFilePath&#40;&#91;out, retval&#93; BSTR* LogFilePath&#41;; 
		&#91;id&#40;0x40030000&#41;, propput, helpstring&#40;"Sets the name of the log file. Default YLog.log"&#41;&#93; 
		HRESULT LogFilePath&#40;&#91;in&#93; BSTR LogFilePath&#41;; 
		&#91;id&#40;0x40030001&#41;, propget, helpstring&#40;"New file or append to existing file"&#41;&#93; 
		HRESULT WriteMode&#40;&#91;out, retval&#93; WriteModeFlag* WriteMode&#41;; 
		&#91;id&#40;0x40030001&#41;, propput, helpstring&#40;"New file or append to existing file"&#41;&#93; 
		HRESULT WriteMode&#40;&#91;in&#93; WriteModeFlag WriteMode&#41;; 
		&#91;id&#40;0x40030002&#41;, propget, helpstring&#40;"Delimiter between fields in the same log line"&#41;&#93; 
		HRESULT Delimiter&#40;&#91;out, retval&#93; BSTR* Delimiter&#41;; 
		&#91;id&#40;0x40030002&#41;, propput, helpstring&#40;"Delimiter between fields in the same log line"&#41;&#93; 
		HRESULT Delimiter&#40;&#91;in&#93; BSTR Delimiter&#41;; 
		&#91;id&#40;0x60030000&#41;, helpstring&#40;"Adds a new field in the current log line"&#41;&#93; 
		HRESULT AddParameter&#40; 
		&#91;in, out&#93; BSTR* ParamName, 
		&#91;in, out&#93; BSTR* ParamValue&#41;; 
		&#91;id&#40;0x60030001&#41;, helpstring&#40;"it is called to create a new line in log"&#41;&#93; 
		HRESULT ClearParameters&#40;&#41;; 
		&#91;id&#40;0x60030002&#41;, helpstring&#40;"Writes the current line at the log file"&#41;&#93; 
		HRESULT WriteLogRecord&#40;&#41;; 
	&#125;; 

	&#91; 
		uuid&#40;FE06B9A2-DCC1-4A46-B5FB-6A02A0AC6E98&#41;, 
		version&#40;1.0&#41; 
	&#93; 
		coclass CLogHandler &#123; 
		&#91;default&#93; interface _CLogHandler; 
	&#125;; 

&#125;;
Τώρα πρέπει να περνάει το compilation.


Για να δείς ποιά com objects εξάγει το άλλο dll άνοιξε το excel, πάτα [ATL]+[F11] για να σε πάει στον VBA Editor, κάνε διπλό κλίκ στο Sheet1 στο παράθυρο πάνω αριστερά για να γράψεις κώδικα για το Sheet1.
Μόλις ανοιξει το παράθυρο του κώδικα πήγαινε στο Tools | References και ψάξε στη λίστα να βρείς την βιβλιοθήκη του dll για να το προσθέσεις στα references - τσεκάρεις το αντίστοιχο check box. Αν δεν υπάρχει πήγαινε στο κουμπί browse και βρες που είναι αποθηκευμένο το dll σου και φόρτωσε το.
Μόλις το προσθέσεις στα references, πάτα [F2] για να σου ανοίξει ο object browser και στο πρώτο combo box (που πρέπει να λέει <all libraries>) επιλέγεις την library του dll αυτού για να δεις τα com objects που εξάγει και τις μεθόδους του.

Αν δεν μπορείς να το προσθέσεις στα references, και αφού δεν σώζει το idl, ίσως πρέπει να ψάξεις στα newsgroup της microsoft.

Fwteini
Δημοσιεύσεις: 10
Εγγραφή: 21 Ιουν 2006 23:56

COM C++ client

Δημοσίευση από Fwteini » 28 Ιουν 2006 16:05

ok, Το βρήκα το πρόβλημα στο πρώτο dll. Ήθελε να μεταφέρω ακριβώς μετά το interface _CLogHandler τη δήλωση του WriteModeFlag. Ήταν στο τέλος και για αυτό δεν ήξερε τι ήταν όταν το συναντούσε.
άρα το πρόβλημα μου είναι τώρα γιατί βγάζει αυτό το error το άλλο dll. Διάβασα κάπου ότι αυτό μπορεί να οφείλεται στο γεγονός ότι έχει dependencies απο άλλα dll που δεν τα έχω κάνει register. Πως σου φαίνεται αυτή ηυ άποψη? Έχεις καμία ιδέα?

EDIT: Με πρόλαβες!
Τελευταία επεξεργασία από το μέλος Fwteini την 28 Ιουν 2006 16:13, έχει επεξεργασθεί 1 φορά συνολικά.

Fwteini
Δημοσιεύσεις: 10
Εγγραφή: 21 Ιουν 2006 23:56

COM C++ client

Δημοσίευση από Fwteini » 28 Ιουν 2006 16:12

Τα έκανα αυτά που λες με το excel και βλέπω δίπλα τα members του dll.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

COM C++ client

Δημοσίευση από dva_dev » 28 Ιουν 2006 17:21

Αφού τα βλέπεις τότε δεν έχεις κάποιο πρόβλημα με το registration, και μπορείς να χρησιμοποιήσεις τα com objects του dll.
Λίγο που κοίταξα στο google η μόνη απάντηση που είδα είναι ότι το έχουν συναντήσει κι άλλοι αυτό το πρόβλημα, και το μόνο που πετύχει κάποιος είναι να δει το idl από κάποιο άλλο μηχάνημα.
Δεν δοκιμάζεις κι εσύ να τρέξεις το ole/com object viewer σε κάποιον άλλο υπολογιστή, μπας και παίξει;

Fwteini
Δημοσιεύσεις: 10
Εγγραφή: 21 Ιουν 2006 23:56

COM C++ client

Δημοσίευση από Fwteini » 28 Ιουν 2006 18:32

Εκμετελεύομαι λίγο την καλοσύνη σου αλλά δεν έχω κανέναν άλλο να με βοηθήσει.
Το άνοιξα σε άλλον υπολογιστή και δημιούργησα το idl το οποίο πρόσθεσα στο project αλλά στο build μου βγάζει error \PeQaSoModules.IDL(94): error MIDL2025 : syntax error : expecting a type specification near "<"
Μήπως έχεις πάλι καμιά ιδέα για το τι συμβαίνει;
Συνημμένα
PeQaSoModules.rar
To idl σε rar
(5.94 KiB) Μεταφορτώθηκε 258 φορές

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

COM C++ client

Δημοσίευση από dva_dev » 28 Ιουν 2006 19:37

Απ' το τίποτα καλό είναι κι αυτό.

Στην γραμμή 94 λέει:

Κώδικας: Επιλογή όλων

&#91;in, out, optional&#93; <GetRefTypeInfo failed>** aLogHandler, 
Προφανώς δεν μπόρεσε να βρεί το interface που περιμένει γι αυτό και έχει βάλει <GetRefTypeInfo failed>, το οποίο δεν μπορεί φυσικά να περάσει από compilation.

Κοίταξε λίγο στην VBA (όπως και πρίν) για το object PeQaSoCore, πρέπει να έχει μια μέθοδο "Initialize", η οποία παίρνει 4 παραμέτρους (User, Password, Server, aLogHandler) με προεραιτική την τελευταία, και επιστρέφει boolean. Η 4η παράμετρος τι τύπου είναι;
Αν κρίνω από το όνομα υποθέτω ότι είναι _CLogHandler (αυτό που πήρες από το προηγούμενο IDL), αλλά δεν μπορώ να είμαι σίγουρος.

Οπως και να έχει, αν δεν βγάλεις άκρη ή δεν είσαι σίγουρη μπορείς να βάλεις IDispatch και κατά πάσα πιθανότητα καθάρισες, υπάρχει πάντα μια μικρή πιθανότητα το Interface που περιμένει να μην κληρονομεί από το IDispatch, αλλά κατά τη γνώμη μου είναι μικρή και δεν χάνεις τίποτα να το κάνεις IDispatch.
Οπότε η γραμμή αυτή μπορεί να γίνει:

Κώδικας: Επιλογή όλων

&#91;in, out, optional&#93; IDispatch** aLogHandler,
Είναι αγορασμένο component ? Δεν έχεις εσύ ή κάποιος άλλος κάποιο documentation?

Δεν μπορώ να κάνω compile τώρα να δώ αν περνάει (δεν έχω visual studio στο μηχάνημα που είμαι).

Fwteini
Δημοσιεύσεις: 10
Εγγραφή: 21 Ιουν 2006 23:56

COM C++ client

Δημοσίευση από Fwteini » 28 Ιουν 2006 20:07

Στο VBA η Initialize έχει μόνο 3 παραμέτρους, τις τρείς πρώτες!
Αυτό το component δεν είναι αγορασμένο. Είναι ένα κομμάτι που έχει υλοποιήσει κάποιος άλλος και άφορά στην πτυχιακή μου. Μου το έδωσε ο επιβλέπον αλλά αυτός δεν μπορεί να με βοηθήσει και πολύ! Όσο για documentation ούτε λόγος. Δεν ξέρω γιατί αλλά μου είπε ότι δεν υπάρχει κάτι.

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες