Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
Verwijderd
'VB' kent het begrip class niet zoals dat wordt gebruikt in C++. Je kunt wel een COM object definieren in C++ en die gebruiken in VB. Dit is echter in C++ wel wat vervelend. (alhoewel ATL je wel helpt in Visual Studio)
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
Een voorbeeldje:
In je C++ source file:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| class Klasse
{
private:
int blaat;
public:
Klasse () : blaat (0)
{
}
Klasse (int i) : blaat (i)
{
}
void doeIets ()
{
// ...
}
};
extern "C" {
Klasse * Klasse_new ()
{
return new Klasse ();
}
Klasse * Klasse_new_int (int i)
{
return new Klasse (i);
}
void Klasse_delete (Klasse * k)
{
delete Klasse;
}
void Klasse_doeIets (Klasse * k)
{
k->doeIets ();
}
} |
en in VB dan gewoon de Klasse_* functies gebruiken:
1
2
3
4
5
| Dim k as Long k = Klasse_new (5) Klasse_doeIets k Klasse_delete k |
Hoewel COM wel mooier werkt (maar imho irritant om te implementeren in C++)... dan heb je ook gelijk 'garbage collection' dat de VB runtime voor je doet
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.
Verwijderd
Ja, maar in .NET is C++ geen C++ meer, en VB geen VB meer (bij wijze van spreken)Op vrijdag 19 juli 2002 21:58 schreef -Avalanche- het volgende:
In .NET is dit dan wel mogelijk ...
Ik maak ook nog gebruik van templates
Is dit ook mogelijk in VB met die wrapper functies?
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
Verwijderd
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
Verwijderd
1
2
3
4
5
6
| COM and COM+ Programming Primer, The, 1/e Alan Gordon Copyright 2000, 796 pp. Paper format ISBN 0-13-085032-2 |
Begint heel basic met C++ het hoe en waarom uit te leggen en moved langzaam door naar ATL om je leven iets aangenamer te maken.
Verwijderd
Op zich is het niet zo lastig, in de MSDN zit goede help hoe een COM component in C++ te bouwen in VC++6.
* class.functie werkt dan ook?
* werken template class'en ook nog? class<int> i;
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
Verwijderd
Class in C++ != class in VB.Op dinsdag 23 juli 2002 17:23 schreef riezebosch het volgende:
* maar werken die class'en in het COM object dan in VB gewoon als nieuw type variabele?
* class.functie werkt dan ook?
* werken template class'en ook nog? class<int> i;
Class in VB == COM object
en werkt dus niet met templates.
class.functie werkt gewoon. Ik heb bv eens een ipnr2hostname component gemaakt in C++, en die is gewoon in VB (of vbscript of whatever) te gebruiken, eerst reference in je project aanleggen naar de typelib, dan component aanmaken zoals je altijd al doet in VB via Dim var as [package.]comclassname
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack
Als je je explorer goed in de gaten houdt tijdens het compilen van een redelijk groot VB project (bij kleintjes gaat het te snel) dan zul je zien dat VB in de projectfolder voor iedere module een objectfile aanmaakt.
Bij mijn weten wordt vervolgens voor het linken exact dezelfde linker gebruikt als die door VC++ wordt gebruikt.
Mijn idee: zou het niet mogelijk zijn die object files op te vissen (voordat VB ze weer verwijdert na het linken), en die vervolgens zelf te linken, samen met een eigen objectfile (gemaakt in C++, of ieder ander taaltje for that matter) ?
Voor klassen zou dit nog steeds geen oplossing zijn, maar het zou dan wel mogelijk zijn om in C gebakken functies te gebruiken in VB zonder de noodzaak van een externe reference.
4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1
Ja, dat is mogelijk. Op die manier kun je ook gewoon functies exporten in VB en zo een 'normale' DLL maken.Op woensdag 24 juli 2002 11:12 schreef johnwoo het volgende:
Mijn idee: zou het niet mogelijk zijn die object files op te vissen (voordat VB ze weer verwijdert na het linken), en die vervolgens zelf te linken, samen met een eigen objectfile (gemaakt in C++, of ieder ander taaltje for that matter) ?
Ik ben ooit ergens een progje ofzo gevonden wat tussen de compiler en linker gaat zitten en zo die object files bewaart ofzo. Zoek eens op [url="http://www.pscode.com"]www.pscode.com[/url], volgens mij had ik het daar gevonden.
[edit]
Niet op pscode dus, maar hier: [url="http://lockfree.50megs.com/linker.html"]http://lockfree.50megs.com/linker.html[/url]
- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!