Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [c++] creazione di una dll per c#

    Salve a tutti, spero qualcuno mi possa chiarire le idee

    io ho il seguente codice:

    codice:
    #include <Windows.h>
    #include <d:\lavoro\c++\opennurbs_20110202\opennurbs\opennurbs.h>
    
    
    extern "C" __declspec(dllexport)  ON_3dVector Vcreate( ON_3dPoint p0,  ON_3dPoint p1,  double len) {
    
    	double d = len /  (p0.DistanceTo(p1));
    	
    double d = len /  (p0.DistanceTo(p1));
    	
    	ON_3dVector v = ON_3dVector::ON_3dVector ((p0.x - p1.x) * d, (p0.y - p1.y) * d, (p0.z - p1.z) * d);
    	
    	return v;
    }
    
    
    
    
    
    BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                           DWORD reason        /* Reason this function is being called. */ ,
                           LPVOID reserved     /* Not used. */ )
    {
        switch (reason)
        {
          case DLL_PROCESS_ATTACH:
            break;
    
          case DLL_PROCESS_DETACH:
            break;
    
          case DLL_THREAD_ATTACH:
            break;
    
          case DLL_THREAD_DETACH:
            break;
        }
    
        /* Returns TRUE on success, FALSE on failure */
        return TRUE;
    }
    praticamente sto utilizzando visual c++ 2010 per generare una dll che contenga alcune funzioni che utilizzano le opernnurbs, il compilatore mi da alcuni errori tra cui questi:

    warning C4190: 'Vcreate' è stato avviato al collegamento C, ma restituisce il tipo definito dall'utente 'ON_3dVector', che è incompatibile con il C
    1> d:\lavoro\c++\opennurbs_20110202\opennurbs\opennur bs_point.h(931): vedere la dichiarazione di 'ON_3dVector'

    qualcuno sa dirmi dove sbaglio? perdonate l'ignoranza, non ho mai programmato in c++ e purtroppo mi ci devo cimentare ed anche alla svelta perché dobbiamo riscrivere alcune funzioni abbastanza complicate scritte in c#... grazie in anticipo a chiunque mi aiuti.

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Credo ti segnali il tuo presunto uso di una classe in C.
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    già ... ma è l'unico modo con cui sono riuscito a far vedere la dll da c#....

  4. #4
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    a parte la nomenclatura, ma credo i problemi potrebbero essere altri
    Per gli Spartani e Sparta usa spartan Il mio github

  5. #5
    si... immagino ... mi rendo conto che sono stato un po' vago nella domanda...
    sto cercando di capire se sul web riesco a trovare qualche esempio pratico..

  6. #6
    comunque... se io ho una classe in c++... come faccio a fare in modo che linguaggi esterni come il c# possano vederla? il C non supporta le classi, comprendo l'errore.

  7. #7
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Nn so se sbaglio, ma credo che in ambiente windows, l'unico modo siano gli oggetti COM. Cmq puoi usare SWIG per fare switching tra i vari linguaggi.
    Per gli Spartani e Sparta usa spartan Il mio github

  8. #8
    Eh belin che dritta che mi hai dato!!!!

    Grazie mille per l'aiuto!


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.