Hostname ermitteln / Linkerfehler



  • Hallo zusammen

    Ich möchten den Hostname meines Rechners ermitteln.
    Diese Funktion soll in einer DLL abgelegt werden.
    Ich habe bereits eine Lösung gefunden, jedoch ich bekomme immer einen Linkerfehler. Ich muß dazusagen, daß diese Lösung aus der FAQ des BCB Forums stammt, und unter BCB auch funktioniert, nur mit MSVCC bei mir nicht.

    /******************************************************************************
    Description:	Function returns hostname
    Parameter:		none
    Return:			char *Hostname
    ******************************************************************************/
    char* GetHostName(void)
    {
    	char Hostname[64];
    	WSADATA SockVer;
    
    	//init winsock
    	if(WSAStartup(MAKEWORD(2,0), &SockVer))
    	{		
    		return "WSAStartup error";
    	}
    
    	if(gethostname(Hostname, sizeof(Hostname)))
    	{
    		switch(WSAGetLastError())
    		{
    			case WSAEFAULT:			return "WSAEFAULT";			
    
    			case WSANOTINITIALISED:	return "WSANOTINITIALISED";			
    
    			case WSAENETDOWN:		return "WSAENETDOWN";			
    
    			case WSAEINPROGRESS:	return "WSAEINPROGRESS";			
    
    			default:				return "UnknownErrorcode";
    		}
    		WSACleanup();				
    	}
    	return Hostname;
    }
    
    Hier die Fehlermeldung:
    --------------------Configuration: ATE - Win32 Debug--------------------
    Linking...
       Creating library Debug/ATE.lib and object Debug/ATE.exp
    ATE.obj : error LNK2001: unresolved external symbol __imp__WSAGetLastError@0
    ATE.obj : error LNK2001: unresolved external symbol __imp__gethostname@8
    ATE.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
    Debug/ATE.dll : fatal error LNK1120: 3 unresolved externals
    Error executing link.exe.
    
    ATE.dll - 4 error(s), 0 warning(s)
    

    Ich hoffe ihr könnt mir helfen.
    Danke.

    MfG Keks





  • Hallo zusammen

    @UNIX-Tom

    Ich habs mal mit dem von dir genannten Beispiel ausprobiert, allerdings bekomme ich immer noch Fehler.

    AfxSocketInit(NULL); 
    	char Hostname[20];
    
    	gethostname(Hostname, 20);
    

    Hier die Fehlermeldung:
    error C2065: 'AfxSocketInit' : undeclared identifier

    Muß ich vielleicht noch etwas includieren?

    MfG Keks



  • Hallo zusammen

    Hab den fehlenden Header gefunden, wenn es interessiert die afxsock.h hat gefehlt.

    Allerdings würde mich doch noch interessieren wo in meinem ersten "Versuch" die Linkerfehler herkommen, den wie gesagt im BCB tut es.

    Vielen Dank nochmals.

    MfG Keks


Anmelden zum Antworten