2012-01-04 10 views
7

Recentemente ho scoperto a problem on the midas e l'ho risolto, il problema ora è che voglio usare MidasLib non il midas.dll e con il codice sorgente sono solo in grado di costruire la DLL.Come creare midas.obj dal codice sorgente midas

La sorgente è C++ e con essa ho poche conoscenze. So che MidasLib.pas utilizza internamente midas.obj, quindi ho bisogno di crearlo per collegare staticamente le midas alla mia applicazione. Come farlo su C + + Builder? (XE)

+0

Potrebbe essere meglio applicare patch al codice in memoria piuttosto che provare a ricompilare. Se riesci a localizzarlo in memoria 255, tutto ciò che devi fare è una modifica abbastanza VirtualProtect e sarai d'oro. –

+0

@DavidHeffernan Sì! Questa sarebbe davvero la forma migliore, ma come trovare: 1 - la dichiarazione #define; 2 - la linea da modificare? –

+0

@DavidHeffernan Quindi, NON c'è MODO di costruire midas.obj dal codice sorgente ???? –

risposta

1

Quando si compila il codice C++, il compilatore crea un file .OBJ per ogni file .CPP/.C che si trova e li salva da qualche parte sul computer. Quello che succede nella maggior parte dei casi è che si eseguirà un linker su tutti questi file .OBJ per unirli in un singolo EXE o DLL, ma nel tuo caso non hai bisogno di questi risultati. Il tuo C++ Builder è, come la maggior parte degli IDE di programmazione, che esegue automaticamente sia la compilazione che il collegamento.

Se si desidera solo .OBJ, è necessario trovare dove nella cartella del progetto C++ Builder sta posizionando i suoi file .OBJ (denominato "output intermedio", in genere, in quanto è il passaggio intermedio tra la compilazione e il collegamento) . Quindi devi avere un file sorgente chiamato midas.cpp o midas.c che produca un file di output corrispondente chiamato midas.obj.

+0

Sì! Questa era la risposta che stavo cercando. Ma sfortunatamente Embarcadero non fornisce un midas.cpp, quindi niente midas.obj questa volta. Ma ho seguito l'approccio di David Heffernan e ho eseguito una patch sul midas.obj originale per ottenere il comportamento previsto. Grazie mille. Solo per spiegare un po 'di più: il file .obj è per il file .cpp su C/C++ come il file .dcu è per il file .pas su Delphi;) –

+0

Ecco la mia correzione (in portoghese, mi dispiace): https://sites.google.com/site/carlosfeitozafilho/artigos/comoobtermensagensdeerroereconcileerrorcommaisde255caracteres –