Page 1 of 5 12345 LastLast
Results 1 to 15 of 73

Thread: C++ help

  1. #1
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default C++ help

    Come ultimo esame devo fare un fottuto progetto di robotica.

    Il prof vuole che sia assolutamente scritto in c++, linguaggio che non ho mai usato, e che sia sviluppato con visual studio 2008, ambiente che non ho mai usato.

    Sostanzialmente devo scrivere una dll che faccia una certa cosa (parsing da un file per ottenere certe informazioni su oggetti tridimensionali, proiezione di questi oggetti 3d sul piano 2d, generazione di una matrice che esplifichi come sono gli oggetti sul piano 2d e infine la generazione di un file contenente la suddetta matrice).

    Ora, sticazzi di quello che devo fare, il mio problema è un altro.. sto facendo dei test per ambientarmi con l'ambiente (lol), ma non capisco come minchia fare ad eseguire la dll. Prima mi obbligava scegliere un file per il debug, scelta che è ricaduta sull'unico disponibile cioè regsvr32.exe.
    Ora, se provo ad eseguire il tutto (ovviamente dopo aver compilato), mi dice "nessun nome di DLL specificato".

    WTF?

    Se qualcuno mi illumina mi fa un grandissimo favore visto che, come già detto, è l'ultimo esame e devo consegnarlo asap visto che il termine per la consegna del libretto per rientrare nella sessione di laurea di dicembre è il 10 novembre.

    Aiutoh

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  2. #2
    Lieutenant
    Join Date
    Feb 2004
    Location
    Bresso
    Posts
    4.683

    Default

    Non ho ben capito cosa ti serve, ma una dll non la puoi eseguire.
    Dovresti fare un altro progetto eseguibile (console o window non so che deve fare il tuo programma), aggiungere la reference alla dll e fare le chiamate dal codice di questo progetto.

    Regsvr32 serve a registrare le dll o gli oggetti COM, non c'entra col debug.

  3. #3
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Come detto sopra mai usato c++ nè visual studio ergo non conosco un tubo ^^

    Cmq boh pensavo che ci fosse un toollino o qualcosa per far girare una dll anche se in linea teorica eseguibile non è. pd -_-

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  4. #4
    Lieutenant
    Join Date
    Feb 2004
    Location
    Bresso
    Posts
    4.683

    Default

    Purtroppo Visual C++ ce l'ho in ufficio, qui a casa ho solo C#, quindi vado a memoria, pero' la struttura dei progetti dovrebbe essere molto simile e funzionare come ti ho detto.

    Crea 2 progetti, uno come Console Application (o Window se deve essere grafico) che e' l eseguibile, l'altro come Class Library ( o come si chiama per il C++) che genera la dll.
    Poi dovresti avere un AddReference o simile sul progetto dell'exe e gli aggiungi quello della dll.
    A questo punto includi i .h nel codice dell'exe e puoi creare oggetti della dll, dovrebbe funzionarti l'intellisense ecc ecc

    Domani eventualmente ti posso dire qualcosa di piu' preciso.

  5. #5
    Warrant Officer
    Join Date
    Nov 2003
    Location
    Suisse
    Posts
    2.969

    Default

    Kat mi ha preceduto di 1 minuto, ha detto tutto perfettamente

    Altra cosa

    CLR Project -> Class Library
    Win32 -> Win32 Project per la DLL

    Certo che vacca eva, dopo 4-5 anni che non tocco C e faccio solo Java, sono troppo spaesato

    P.S.: sto facendo anche io un progetto in C++ con VS 2008.
    Ma alla fine gli oggetti che crei meglio managed o non-managed per le 'piccole' cose ?
    Last edited by NoeX; 21st October 2009 at 19:10.
    I will be back, eventually.

  6. #6
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Thanks, domani provo che mo son cotto che ho sbattuto la testa per mezza giornata su sta menata di c++ e l'altra mezza giornata su agent speak + java per lo stage

    Come se non bastasse stasera mi tocca pure la sukata by champions porco ido giornata dimmerda t_T

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  7. #7
    Warrant Officer
    Join Date
    Nov 2003
    Location
    Suisse
    Posts
    2.969

    Default

    Quote Originally Posted by Kat View Post
    Non ho ben capito cosa ti serve, ma una dll non la puoi eseguire.
    Dovresti fare un altro progetto eseguibile (console o window non so che deve fare il tuo programma), aggiungere la reference alla dll e fare le chiamate dal codice di questo progetto.
    Regsvr32 serve a registrare le dll o gli oggetti COM, non c'entra col debug.

    Domanda DLL (dato che a breve dovrò farne una e non le ho mai fatte prima d'ora)

    DLL = libreria di funzioni, ok

    Ho un progetto in C#, ho una DLL in C++ (CLR o Nativo non penso faccia differenza sull'utilizzo), posso invocarne una funzione della Dll che prende in input un oggetto definito in C++ da C# ?

    Non mi torna molto il sistema dei tipi
    I will be back, eventually.

  8. #8
    Lieutenant
    Join Date
    Feb 2004
    Location
    Bresso
    Posts
    4.683

    Default

    Quote Originally Posted by NoeX View Post
    Domanda DLL (dato che a breve dovrò farne una e non le ho mai fatte prima d'ora)
    DLL = libreria di funzioni, ok
    Ho un progetto in C#, ho una DLL in C++ (CLR o Nativo non penso faccia differenza sull'utilizzo), posso invocarne una funzione della Dll che prende in input un oggetto definito in C++ da C# ?
    Non mi torna molto il sistema dei tipi
    L'argomento e' molto complesso.
    Se devi semplicemente chiamare una o piu' funzioni C++ da C#, nel codice c++ devi dichiarare la funzione per essere esportata, una cosa del tipo:
    extern "C" __declspec(dllexport) void func()
    {
    ...
    }

    e poi utilizzare il sistema di P/Invoke di .NET (namespace System.Runtime.InteropServices) dichiarando la stessa funzione in C# nel modo seguente:
    [DllImport("nomedll.dll")]
    static extern void func();

    A quel punto puoi chiamarla nel codice C# come un normale metodo.

    Se invece vuoi istanziare oggetti C++ e' molto piu' complicato, l'unico sistema che conosco e' generare delle classi COM in C++ invece che classi normali, poi aggiungere la reference alla dll COM nel progetto C# e .NET si occupera' del resto generando delle classi di Interop corrispondenti a quelle C++, che puoi istanziare normalmente.

    Tutto questo senza entrare nel merito del passaggio dei parametri, ci sono delle corrispondenze precise da utilizzare per fare il marshalling dei tipi (bool, int, string, puntatori ecc) fra i due linguaggi.

    Se ti serve approfondire posso cercare dei link dove sono spiegati meglio tutti questi meccanismi.
    Last edited by Kat; 21st October 2009 at 21:31.

  9. #9
    Lieutenant Commander San Vegeta's Avatar
    Join Date
    Oct 2003
    Location
    Bologna
    Posts
    12.153

    Default

    Quote Originally Posted by NoeX View Post
    Domanda DLL (dato che a breve dovrò farne una e non le ho mai fatte prima d'ora)
    DLL = libreria di funzioni, ok
    Ho un progetto in C#, ho una DLL in C++ (CLR o Nativo non penso faccia differenza sull'utilizzo), posso invocarne una funzione della Dll che prende in input un oggetto definito in C++ da C# ?
    Non mi torna molto il sistema dei tipi
    controlli a quanti bit è il tipo nativo e usi le funzioni di marshaling/unmarshaling per fare il cast più appropriato.
    il bello del c++ è che lavora ancora a basso livello, quindi decidi tu come interpretare le aree di memoria.
    I rubinetti a casa di Chuck Norris non perdono, vincono.

    In the beginning there was nothing...then Chuck Norris Roundhouse kicked that nothing in the face and said "Get a job". That is the story of the universe.

    Quote Originally Posted by Wolfo View Post
    Concordo e propongo ban temporanei per chi critica la topa , la topa non si critica , dal trombabile in su non si commenta in modo sgradevole.
    la tua ignoranza in materia e' raccapricciante
    -cit. Estrema, 2022

  10. #10
    Lieutenant
    Join Date
    Feb 2004
    Location
    Bresso
    Posts
    4.683

    Default

    Un paio di link sull'argomento:
    http://www.codeproject.com/KB/COM/cominterop.aspx
    Nella prima parte spiega abbastanza bene come creare oggetti COM e utilizzarli in C#.


    http://www.codeproject.com/KB/cs/essentialpinvoke.aspx
    C'e' una comoda tabella di riferimento per le conversioni di tipo tra C++ e C#.

  11. #11
    Hador's Avatar
    Join Date
    Mar 2004
    Location
    Milano
    Posts
    31.321

    Default

    (kat sta sera non ci sei?)
    probabilmente non è questo il caso ma per applicazioni molto semplici, o meglio dove i due programmi comunicano solo per 1 funzione, si può anche usare qualche middleware stupidissimo... noi di recente facevamo comunicare java-c# e php tramite xml-rpc.

  12. #12
    Lieutenant Glasny's Avatar
    Join Date
    Mar 2004
    Location
    Roma
    Posts
    4.882

    Default

    Povero Axet fa una domanda semplice e nel thread si finiscono per dire cose anche interessanti ma molto più avanzate

    Per comunicazioni molto semplici si può anche pensare a utilizzare direttamente una connessione tcp.

    Riassumo un po' per Axet. Le dll sono delle librerie quindi giustamente non hanno nemmeno un main e necessitano di un'applicazione per essere eseguite. Ecco perchè ti viene detto di creare sia la dll che poi un'applicazione. Il resto ovviamente non c'entra siccome usi semplicemente C++ senza altri linguaggi in mezzo.
    Waiting for nothing
    AKA Ganondorf - Lista giochi giocati dal 97 a oggi in spoiler :
    Spoiler

    "Chi non sa fare la guerra, molto difficilmente può fare la pace"
    Playing Starcraft 2

  13. #13
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Ma porco ido del maonnad troia impestata del cristo caro, ho passato una 15ina di tutorial e TUTTI, TUTTI, TUTTI I FOTTUTTISSIMI CODICI DI ESEMPIO NON VANNO.

    Come porco ido è possibile cristo, dice che mancano i nomi delle dll da una parte, dall'altra che gli import non sono ok.. l'unica cosa che son riuscito a fare è una normale applicazione console, woot, mi è utile!

    Cioè veramente mi stan cadendo i coglioni, bell'ambiente visual studio cazzo t_t

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  14. #14
    Ensign Cifra's Avatar
    Join Date
    Jul 2004
    Location
    Torino
    Posts
    3.812

    Default

    Potresti moderare il tuo linguaggio? Grazie.

  15. #15
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Quote Originally Posted by Cifra View Post
    Potresti moderare il tuo linguaggio? Grazie.
    rofl

    edit:
    Non esiste un tutorial ufficiale o quanto meno fatto come si deve di Visual C++ 2008 inerentemente alla creazione e all'uso in una app console di una dannata dll??
    Cioè ogni cazzo di esempio non funziona o perchè non compila e anche se compila poi non funge una ceppa.. ho buttato giu tutto il progetto uml, devo "solo" implementare ma finchè non riesco ad eseguire un tubo sono punto a capo perchè non saprò mai se quel che ho fatto funziona quindi sarebbe solo controproducente.. sto impazzendo sono ore che compilo e provo roba e non funge una sega.
    Last edited by Axet; 23rd October 2009 at 16:05.

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

Page 1 of 5 12345 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
[Output: 104.03 Kb. compressed to 88.91 Kb. by saving 15.11 Kb. (14.53%)]