seguito sulle code di my previous (answered) question ...Esiste un'API Subversion di Windows C++ più semplice o un esempio .vcproj per minimal_client.c?
SharpSvn fa chiamare l'Subversion client API semplice:
SvnClient client = new SvnClient();
client.Authentication.DefaultCredentials = new NetworkCredential(username, password);
client.CheckOut(new Uri("http://xxx.yyy.zzz.aaa/svn/repository"), workingCopyDir);
D'altra parte, chiamando l'API client da C/C++, come mostrato in minimal_client.c richiede codifica "più vicino al metallo", per così dire, su Subversion.
Esistono librerie di Windows per C++ in Visual Studio 2003 che presentano un'interfaccia più semplice di quella utilizzata da minimal_client?
Se non ci sono, c'è un progetto VS2003 C++ (un file .vcproj) che illustra ottenere minimal_client a correre? Sono in grado di compilare minimal_client.c e collegarlo con le seguenti librerie:
libsvn_client-1.lib libsvn_delta-1.lib libsvn_diff-1.lib libsvn_fs-1.lib libsvn_fs_base-1.lib libsvn_fs_fs-1.lib libsvn_ra-1.lib libsvn_ra_local-1.lib libsvn_ra_svn-1.lib libsvn_repos-1.lib libsvn_subr-1.lib libsvn_wc-1.lib libapr-1.lib libaprutil-1.lib xml.lib libneon.lib
ma quando faccio funzionare la mia domanda (nel debugger o avviare il build di rilascio, senza il debug), viene eseguito per circa 20 secondi senza colpire la prima linea di main() e quindi genera questa eccezione:
un'eccezione di tipo 'System.TypeLoadException' verificato in Unknown modulo.
Ulteriori informazioni: Impossibile caricare il tipo
apr_pool_t
dall'assemblaggio minimal_client, Version = 1.0.3477.16033, Lingua = il neutro PublicKeyToken = null.
Ho provato varie combinazioni di libsvn_ .lib e svn_ lib inutilmente.
Qualche idea su cosa sto facendo male?
EDIT: Ho iniziato fresco con un "Progetto Console Win32" (ancora in VS2003) e sono ora in grado di eseguire il debug le prime righe del mio app. Ma ora, su questa linea:
if (svn_cmdline_init ("minimal_client", stderr) != EXIT_SUCCESS)
ottengo un diverso un'eccezione (nel debugger o avviare il build di rilascio senza eseguire il debug):
Eccezione non gestita a 0x7c91b21a in
Win32ConsoleProject_minimal_client.exe
: 0xC0000005 : Violazione dell'accesso scrivendo la posizione 0x00000010.
EDIT: This thread spiega che questo errore è una mancata corrispondenza tra il CRT svn e stderr nella mia app.Se non voglio creare Svn in modo che corrisponda (non voglio), posso passare NULL invece di stderr (a condizione che sia disposto a fare a meno dei messaggi che andrebbero a stderr) Quando l'ho fatto, il mio l'app ha funzionato correttamente.
È un progetto gestito C++? Hai provato con un progetto C++ "regolare"? –
@RaphaelSP - Potrebbe essere stato uno dei miei problemi: vedere la mia modifica. – JeffH
Sono davvero 3 domande: "Esiste un'API più semplice?", "Esiste un esempio .vcproj?" E "Perché svn_cmdline_init() genera un'eccezione?" – JeffH