Toon posts:

[VB6] Gebruik van C++ DLL in VB

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het probleem is dat ik niet weet hoe een pointer naar een array van structures in VB gedeclared moet worden, hierdoor werkt integratie met een C++ DLL niet.

C++ Structures:
struct Object2
{
LONG Value;
};

struct Object1
{
Object2 *ObjectArray;
DWORD Value;
};

Wat ik nu heb in VB6 is:
Type Object2
Value As Long
End Type

Type Object1
ObjectArray(0) As Object2
Value As Long
End Type

Enig idee? Als ik dit run dan komt de value in object1 wel prima binnen in C++ maar het objectarray niet.

Bij voorbaat dank

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

VB werkt niet met pointers... volgens mij zit er niets anders op dan de ObjectArray als Long de definieren, en dan in C++ een functie te maken om de individuele objecten te accessen via die long

(oh, en code kun je plaatsen tussen [code]...[/code] tags :))

[ Voor 16% gewijzigd door .oisyn op 29-04-2004 16:39 ]

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.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Of kopieer je array in een bytebuffer ofzo met RtlMoveMemory?

Misschien heb je hier iets aan. Heb het niet gelezen, maar lijkt me wat je zoekt in 1 oogopslag...
edit:
Bij nader inzien niet precies wat je nodig hebt ;)

[ Voor 73% gewijzigd door RobIII op 29-04-2004 17:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Adion
  • Registratie: Januari 2001
  • Laatst online: 24-05 07:33
Wat je misschien kan proberen is een 2de definitie van Object1 :

Visual Basic:
1
2
3
4
Type Object1_2
  ObjectArray As Long
  Value As Long
End Type

Vervolgens maak je zo een object aan net voor je het wil passen naar c, en je initializeert het met
obj1_2.value = obj1.value
obj1_2.ObjectArray = VarPtr(obj1.ObjectArray(0))

Als je dan dat obj1_2 doorgeeft ipv obj1 denk ik dat zou moeten werken?

edit:

das dus ongeveer wat .oisyn al zei, alleen hoef je hier volgens mij in c++ geen code aan te passen.

[ Voor 18% gewijzigd door Adion op 29-04-2004 20:00 ]

VirtualDJ 2026 - Fast Image Resizer - Instagram