[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

microsoft.public.dotnet.framework.interop

Tlbimp: unexpected conversion of SAFEARRAY in structure

Armin Zingler

7/18/2007 11:01:00 PM

Hi, (.Net 2.0)

an AX-DLL written in VB6 is imported by tlbimp.

VB6 code:

Public Type SAKomplexRecord
....
End Type

Public Type SAKomplex
Records() As SAKomplexRecord
End Type


IDL: (from original VB6 DLL)
typedef [uuid(.....), version(1.0)]
struct tagSAKomplex {
[helpstring("Records")
]
SAFEARRAY(SAKomplexRecord) Records;
} SAKomplex;


typedef [uuid(.....), version(1.0)]
struct tagSAKomplexRecord {
.....
} SAKomplexRecord;


Problem:
In VB.Net, referencing the imported file, the declaration of
SAKomplex.Records is
"Public Records As System.Array".
I expect it to be
"Public Records() As Projectname.SAKomplexRecord".

Why is this? In the same library, there is another structure containing an
array of structures. There it works.


Armin

1 Answer

Armin Zingler

7/19/2007 12:02:00 AM

0

"Armin Zingler" <az.nospam@freenet.de> schrieb
> Hi, (.Net 2.0)
>
> an AX-DLL written in VB6 is imported by tlbimp.

I assumed that the Upgrade wizard that converts a VB6 project to VB.Net,
internally only calls tlbimp.exe. That's why I asked for tlbimp.exe. In
reality, I used the upgrade wizard (and not tlbimp), which obviously
internally uses "/sysarray" to create the interop assemblies.

If I manually call tlbimp.exe, the result is fine, so this problem is
solved. Anyway thx for reading.


Armin