Aiutoooo...

martedì 06 luglio 2004 - 16.38

hydra Profilo | Junior Member

Ciao a tutti, ho un grosso problema e spero che qualcuno di voi riesca a darmi una dritta. Devo usare una periferica, hotutto il materiale disonibile, ma il problema è che il produttore di questa periferica mi ha dato delle API per c++ (ossia tutti file .H e .LIB). Io ho un'assoluta necessità di utilizzare questa periferica con il visual studio!! Nessuno di voi sa come si possa fare?

Brainkiller Profilo | Guru

Certo,
o scrivi il programma in Visual C++ oppure lo scrivi in .NET usando l'interoperabilità che è un po' più complesso però. Immagino tu abbia anche le .dll finali vero ? e anche la documentazione sulle varie funzioni contenute negli header files .h ?

Che tipo di periferica stai usando ?

ciao
david

hydra Profilo | Junior Member

E' una periferica della Siemens. Si usa una .h che contiene le funzioni per la comunicazione seriale, poi c'è una dll che definisce il protocollo di trasmissione e una dll che contiene le funzioni per comunicare. La hotline Siemens mi ha detto che è possibile utilizzare tali parti solo programmando in C++.. Io devo usare il VS. Posso al limite avere maggiori informazioni su questa interoperbilità ? (è già la seconda volta che la sento nominare e non so cos'è, o probabilmente l'ho usata ma non con questo nome :|). A proposito, ho usato il tuo tip su come usare la grafica di XP in VS...... :-b Grazie in anticipo per ogni consiglio..

hydra Profilo | Junior Member

E cmq si, ho le dll finali e anche il sorgente degli header. Solo che non riesco a usarli..... :(

trinity Profilo | Guru

Perchè come ha detto David non scrivi il codice in .NET ed eventualmente se disponi delle dll, puoi caricarle nel progetto utilizzando l'opzione Aggiungi riferimento.

Ciao
Fabio

hydra Profilo | Junior Member

Ho provato anche a includerle, ma mi dice che il riferimento non è valido, posso importare solo oggetti DLL e COM (ma io dispongo infatti di DLL). Ho provato anche a fare questo: con il comando DUMPBIN ho disassemblato le dll per vederne le funzioni, poi ho creato una classe dove dichiaro le funzioni della dll, solo che quando chiamo una di queste funzioni mi dice che la funzione non è contenuta nella dll. Cosa cavolo sta succedendo?

trinity Profilo | Guru

Ma la dll come è stata creata, mi spiego sotto che linguaggio?Perchè quelle che ho creato io sotto vb net mi funzionano quando le importo.

Ciao

hydra Profilo | Junior Member

E' stato fatto tutto sotto C++.

Brainkiller Profilo | Guru

Trinity,
qui stiamo parlando di codice C++ quindi se fai un Add Reference non te la prende, con un Assembly .NET invece sì.

Hydra,
l'interoperabilità praticamente ti permette di richiamare funzioni contenute in DLL create con architetture e linguaggi precedenti per esempio il C++.
Devi rimapparti in C# o VB.NET tutte le funzioni che ci sono nelle DLL (o nel file .h) e rimappare anche tutti i tipi di dati dei parametri che vengono passati.
Se poi vengono passate strutture il compito si complica ancor di più. Per fare tutto questo dovresti avere un'ottima conoscenza di C++ e buona di .NET non è una cosa banale specialmente se non hai documentazione o esempi.

Non è vero ciò che dice Siemens che è solo possibile in C++. Certamente è la via più facile perchè non ci sono layer intermedi, con .NET invece devi aggiungere un livello in più.

ciao
david

Brainkiller Profilo | Guru

Alcuni articoli di riferimento sull'interoperabilità:
http://www.dotnethell.it/articles/article.aspx?ArticleID=72
http://www.dotnethell.it/articles/article.aspx?ArticleID=73

ciao
david

hydra Profilo | Junior Member

Le tue parole non sono confortanti, nel senso che dai parametri delle funzioni che ho visto ci sono parecchie strutture :( Cmq una cosa confortante è che da c# riesco a richiamare le funzioni senza errori, quindi pensavo appunto di creare una Dll di "scambio". Grazie inoltre per gli articoli che mi sono molto uili. Una cosa: la famosa interoperabilità si utilizza con "using System.RunTime.InteropService;" ? Questo perchè tempo addietro avevo chiesto se era possibile spegnere il pc da codice e mi era stato risposto si, usando l'interoperabilità. Forse adesso comincio a capirne di più. Scusate se sono poco chiaro, ma è da poco che utilizzo il VS e mi tocca procedere da solo con sole conoscenze di Pascal (e anche qualcosa di VB). Cmq grazie mille a tutti.

Brainkiller Profilo | Guru

Esatto è proprio quel namespace che ti permette di usare l'interoperabilità.
Riguardo lo spegnimento del computer ne avevamo parlato tempo fa qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=1236

ricordi ? :)
ciao
david

hydra Profilo | Junior Member

Esatto, ricordo benissimo. Solo che non ho più avuto notizie. O mi sono perso x strada? (se è così scusami ma è un periodo che ho una marea di problemi da risolvere)..

Brainkiller Profilo | Guru

Hai ragione, effettivamente sono in torto io.
Anche io ho una marea di cose :) appena trovo un attimo però mi metto in pari e sfornerò l'utile tip. Consulta ogni tanto la home page, prima o poi apparirà :)

saluti
ciao
david

hydra Profilo | Junior Member

Grazie mille, aspetto il tip allora.
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5