Dll in vb net

mercoledì 12 marzo 2008 - 10.22

chira Profilo | Newbie

Buongiorno, non sono sicura di essere nel thread giusto,spero di si.
Ho un problema. Ho convertito un programma vb6 in vb net ma mi da un errore quando utilizza una dll (presumo scritta in c++) e mi da questo errore:
Unable to cast object of type 'OPCAutomation.OPCServerClass' to type 'OPCAutomation.IOPCGroups'.

Questa dll che in vb6 funzionava perfettamente serve per utilizzare un particolar tipo di opc che sarebbe la dll in questione cioè opcDaCube.dll.
come faccio a utilizzarla anche in vb net?
ho provato a scrivere prima della classe <DllImport("OpcDaCube.dll")> ma mi da un errore nel > dando questo errore:
Error2 Attribute specifier is not a complete statement. Use a line continuation to apply the attribute to the following statement.
quindi l'ho tolto ma lasciando le cose originali come dopo l'importazione fatta dal wizard da vb6 a vb net non riesco a risolvere quell errore del cast.
potete aiutarmi??
grazie in ogni caso.

aiedail92 Profilo | Expert

Ciao

Facendo una ricerca con google ho trovato che il tuo problema è stato riscontrato da molte altre persone. Nel thread si parlava di un problema nella dll, qualcosa come un riferimento sbagliato... Alla fine comunque il problema era stato risolto cambiando la libreria: per l'ambiente .Net bisognerebbe usare la OPCNetApi.dll, scaricabile dai membri dal sito http://opcfoundation.org

Se ti interessa questo è il thread del forum dove ho trovato le informazioni (è in lingua inglese):
http://forums.microsoft.com/msdn/showpost.aspx?postid=497846&siteid=1&sb=0&d=1&at=7&ft=11&tf=0&pageid=0

Per quanto riguarda il secondo errore, quello del DllImport, era dovuto ad un errore di sintassi: poichè nel VB ad ogni linea corrisponde un'istruzione, l'attributo DllImport dovrebbe stare sulla stessa riga in cui dichiari l'oggetto a cui associarlo. Per rendere più chiaro il codice può essere utile tornare a capo, ma per fare ciò bisogna segnalare che le due linee sono da intendre come una sola. Per farlo, devi inserire alla fine della riga uno spazio e un carattere underscore "_", quindi l'istruzione diverrebbe così:

<DllImport("OpcDaCube.dll")> _ Class Classe '... End Class

Anche questo però restituirebbe un errore, in quanto l'attributo DllImportAttribute può essere assegnato solo a un metodo (statico), per indicare che viene chiamato da una libreria dll non gestita.

Luca

chira Profilo | Newbie

Il problema è che avevo già provato a scaricare quella dll iscrivedndomi a quel link ma nn facendo parte di quelle società "paganti" non me la fa scaricare.
Inoltre quello che non capisco essendo la opcdacube una dll che funziona per un determinato opc della siemens come può un'altra dll che quindi nn avrà le licenze e tutte quelle cose che servono per utilizzare quei sistemi della siemens,funzionare lo stesso..
in ogni caso nn riuscendo a scaricarla speravo di poter trovare una soluzione utilizzando questa dll
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5