Linker Error LNK2001



  • .....



  • Habe es leider immer noch nicht loesen koennen.



  • ReZZeX schrieb:

    Habe es leider immer noch nicht loesen koennen.

    Viel Spass dabei die halbe Runtime zu implementieren. 🙄

    Welcher Codeteil führt denn zu diesem Fehler? Diesen umschreiben, die fehlende Funktion implementieren - oder einfach die Runtime statisch mitnehmen.


  • Mod

    DarkShadow44 schrieb:

    Welcher Codeteil führt denn zu diesem Fehler? Diesen umschreiben, die fehlende Funktion implementieren - oder einfach die Runtime statisch mitnehmen.

    terminate ist allgemeiner Teil der Exceptionbehandlung.



  • SeppJ schrieb:

    terminate ist allgemeiner Teil der Exceptionbehandlung.

    So etwas in der Art hatte ich vermutet. Solange man allerdings nur mit der WinApi arbeitet und auf die Standardbibliothek verzichtet sollten nirgends Exceptions fliegen.



  • Das ist der komplette Code Teil:

    DWORD Class::GetNamedProcessID(LPCTSTR process_name)
    {
    	DWORD* pProcs = NULL;
    	DWORD retVal = 0;
    	DWORD dwSize = 1024;
    	DWORD dwRealSize = 0;
    	TCHAR szCompareName[MAX_PATH + 1];
    	int nCount = 0;
    	int nResult = 0;
    
    	pProcs = new DWORD[dwSize]; <-- NEW
    	EnumProcesses(pProcs, dwSize*sizeof(DWORD), &dwRealSize);
    	dwSize = dwRealSize / sizeof(DWORD);
    
    	for (DWORD nCount = 0; nCount < dwSize; nCount++)
    	{
    		ZeroMemory(szCompareName, MAX_PATH + 1 * (sizeof(TCHAR)));
    		if (GetProcessName(szCompareName, MAX_PATH, pProcs[nCount]))
    		{
    			if (lstrcmp(process_name, szCompareName) == 0)
    			{
    				retVal = pProcs[nCount];
    				delete[] pProcs; <-- DELETE
    				return retVal;
    			}
    		}
    	}
    	delete[] pProcs;
    	return 0;
    }
    
    void * __cdecl operator new[](unsigned int bytes) NEW
    {
    	return HeapAlloc(GetProcessHeap(), 0, bytes);
    }
    
    void __cdecl operator delete[](void *ptr) DELETE
    {
    	if (ptr) HeapFree(GetProcessHeap(), 0, ptr);
    }
    


  • Das ist kaum der ganze Code, da fehlt der Teil der zum Linkerfehler führt.

    Wie auch immer, implementier die Funktion einfach mit

    namespace std
    {
    	void terminate()
    	{
    		ExitProcess(0);
    	}
    }
    

    dann sollte der Linker still sein.
    Oder versuch Exceptions komplett zu deaktivieren.



  • .........



  • Projekteigenschaften -> C/C++ -> Codegenerierung -> C++-Ausnahmen aktivieren
    


  • .........


Anmelden zum Antworten