Version einer DLL rausfinden
-
ich leide scheinbar an einem Luxus problem... bekomm es unter DevCPP nicht gebacken... und habe nur Visual Studio .NET zur verfuegung... es darf allerdings unter gar keinen umstaenden mit .NET programiert sein...
Gibts denn noch ne andere Variante? ich erwaege einen Post im WindowsAPI forum, da ich keine ahnung von der WinAPI hab... ich weiss nicht wie ich 1.) Sei anspreche/Einbinde und 2.) wie ich rausbekomme was fuer ne winapi funktion ich brauche .... hab also keinerlei ansatz, googlen hat mich auch nicht weiter gebracht
-
Mit VS2005 kann man auch noch normale Win32- und MFC- und ATL-Anwendungen erzeugen
-
ECHT? WIE!
ich habe Microsoft Visual Studio .NET 2003 ... nciht 2005
EDIT:
Habs raugefunden, einfach ne WIN32 Anwendung erstellen, aber dann haut er mir immernoch ewig viele Fehlermeldungen raus... koenntest du kurz posten was du oben alles einbindest?
-
also das sind alles libs, die ich hinzulinke:
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib
-
Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Alles klar, fuer DWORD brauche ich die windows.h, so weit bin ich nun
Funzt aber immer noch nicht, kommt immer folgendes>
main.o(.text+0x22):main.c: undefined reference to `GetFileVersionInfoSizeA@8' main.o(.text+0xa0):main.c: undefined reference to `GetFileVersionInfoA@16' main.o(.text+0xeb):main.c: undefined reference to `VerQueryValueA@16'
-
Import library: Version.lib
-
flenders schrieb:
Import library: Version.lib
habe noch nie eine Libary importiert, wie genau muesste das aussehen?
-
#pragma comment(lib, "version.lib")
in einer C/CPP-Datei einfügen
-
sowas doofes, ich bekomm den code von PSolid85 einfach nicht lauffaehig, hab ihn auch schon teilweise editiert, klappt allet nit
Ich habe Visual Studio.NET 2003 und DevCPP zur verfuegung, problem ist, das ich die Version einer DLL Datei auslesen moechte und das ohne .NET ...
Vielleicht kann mir jemand irgendwie sagen wie ich den code von PSolid85 zum laufen bekomm, ich verzweifel daran...
-
unter dev-cpp funktioniert das #pragma nicht.
die lib musst du bei den projekt optionen hinzufügen.
--> parameter
--> linker
-lversion-l == linken
ansonsten wäre es hilfreich wenn du das compilerlog hier her kopierst.
-
Also, eigentlich wurde schon alles gesagt, aber hier nochmals zum mitschreiben:
#include <windows.h> #include <tchar.h> #include <stdio.h> #pragma comment(lib, "version.lib") BOOL DisplayFileVersion(LPCTSTR szFileName) { LPVOID vData = NULL; VS_FIXEDFILEINFO *fInfo = NULL; DWORD dwHandle; DWORD dwSize = GetFileVersionInfoSize(szFileName, &dwHandle); if (dwSize <= 0) return FALSE; // try to allocate memory vData = malloc(dwSize); if (vData == NULL) { SetLastError(ERROR_OUTOFMEMORY); return FALSE; } // try to the the version-data if (GetFileVersionInfo(szFileName, dwHandle, dwSize, vData) == 0) { DWORD gle = GetLastError(); free(vData); SetLastError(gle); return FALSE; } // try to query the root-version-info UINT len; if (VerQueryValue(vData, _T("\\"), (LPVOID*) &fInfo, &len) == 0) { DWORD gle = GetLastError(); free(vData); SetLastError(gle); return FALSE; } // build the file-version _tprintf(_T("Version: %d.%d.%d.%d\n"), HIWORD(fInfo->dwFileVersionMS), LOWORD(fInfo->dwFileVersionMS), HIWORD(fInfo->dwFileVersionLS), LOWORD(fInfo->dwFileVersionLS) ); free(vData); SetLastError(ERROR_SUCCESS); return TRUE; } int _tmain() { DisplayFileVersion(_T("f:\\kernel32-win98se.dll")); }
Funktioniert wunderbar unter VS2003...
-
ich danke schonmal!
wenn ich das jetz per Copy/Paste in ein VisualStudio2003 konsolen programm(win32) einfuege, kommt beim kompilieren folgender fehler:
c:\Testen\Testen.cpp(61): fatal error C1010: Unerwartetes Dateiende während der Suche nach der Direktive für die vorkompilierte Headerdatei
Verstehe das aber eigentlich nicht...EDIT:
nachdem ich noch #include "stdafx.h" hinzugefuegt habe, kann ich es kompilieren, allerdings gibt er - egal mit was fuer einer DLL ich es probiere - FALSE wieder, eine Ausgabe von der Funktion kommt leider auch nitEDIT2:
Habe nen bissl rumrpobier und bin zu dem schluss gekommen das er hier:
if (dwSize <= 0)
schon anhaelt, was ja bedeutet das GetFileVersionInfoSize nicht richtig ausgefuehrt wird, oder? kA warum ^^EDIT3:
Danke an alle die mir so lieb geholfen haben, ich bin einfach so dumm... geht gar nit... habe vergessen das nen \ alleine ja irgendwie doof ist... weil das ja das terminierungsziehcen von C Dingsda ist... habe nun immer 2stueck gemacht, dann gehts.... oh mann, meine dummheit kotzt mich an!