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.