PDA

Visualizza la versione completa : [C] Problema compliazione


TecnoSystem
27-05-2010, 22:04
Salve,
premetto che non sono un esperto di c ma sto cercando di integrare delle funzioni custom nella mia versione di php.
e di compilarla all'interno utilizzando LINUX

nel file Zend.c


#include "zend.h"
#include "zend_extensions.h"
#include "zend_modules.h"
#include "zend_constants.h"
#include "zend_list.h"
#include "zend_API.h"
#include "zend_builtin_functions.h"
#include "zend_ini.h"
#include "prova/prova.h"


#ifdef ZTS
# define GLOBAL_FUNCTION_TABLE global_function_table
# define GLOBAL_CLASS_TABLE global_class_table
# define GLOBAL_CONSTANTS_TABLE global_constants_table
# define GLOBAL_AUTO_GLOBALS_TABLE global_auto_globals_table
#else
# define GLOBAL_FUNCTION_TABLE CG(function_table)
# define GLOBAL_CLASS_TABLE CG(class_table)
# define GLOBAL_AUTO_GLOBALS_TABLE CG(auto_globals)
#endif

prova_main();
// qui sta altro codice che prosegue non inserito in quanto troppo lungo

nel mio file "prova/prova.h" metto


#ifndef _PROVA_H_
#define _PROVA_H_
int scanner_start (void);
#endif
e in fine nel file "prova/prova.c" metto


int prova_main (void)
{

}

quando compilo il tutto mi da un errore da 6 gg non lo risolvo
undefined reference to prova_main'
dove sbaglio?
grazie
Marco

oregon
27-05-2010, 22:06
prova_main?

La funzione si deve chiamare

main

non in altro modo ...

TecnoSystem
27-05-2010, 22:52
Ciao oregon,
ma posso inserire due main nello stesso file?
nel senso che il file zend.c già contiene un main
avevo pensato quindi di chiamare la funzione come da esempio prova in quanto già esistente...
comunque ho provato a fare come mi dici tu e adesso mi genera molti più errrori

:confused:

oregon
27-05-2010, 22:59
Non ci siamo capiti ... devi avere un solo main ... a cosa ti serve il prova_main?

TecnoSystem
27-05-2010, 23:03
devo integrare delle mie funzioni quindi la funzione prova_main(); poteva anche chiamarsi
sviluppo();
capisci quello che intendo?..
devi inserire questa funzione nel file Zend.c

oregon
27-05-2010, 23:07
Allora ... ricominciamo ...

Nel file zend.c quella riga

prova_main();

è inserita al di fuori di qualsiasi funzione?

TecnoSystem
27-05-2010, 23:12
questo e il codice





#include "zend.h"
#include "zend_extensions.h"
#include "zend_modules.h"
#include "zend_constants.h"
#include "zend_list.h"
#include "zend_API.h"
#include "zend_builtin_functions.h"
#include "zend_ini.h"
#include "prova/prova.h"


#ifdef ZTS
# define GLOBAL_FUNCTION_TABLE global_function_table
# define GLOBAL_CLASS_TABLE global_class_table
# define GLOBAL_CONSTANTS_TABLE global_constants_table
# define GLOBAL_AUTO_GLOBALS_TABLE global_auto_globals_table
#else
# define GLOBAL_FUNCTION_TABLE CG(function_table)
# define GLOBAL_CLASS_TABLE CG(class_table)
# define GLOBAL_AUTO_GLOBALS_TABLE CG(auto_globals)
#endif

#if defined(ZEND_WIN32) && ZEND_DEBUG
BOOL WINAPI IsDebuggerPresent(VOID);
#endif


ZEND_API int zend_execute_scripts(int type TSRMLS_DC, zval **retval, int file_count, ...)
{


va_list files;
int i;
zend_file_handle *file_handle;
zend_op_array *orig_op_array = EG(active_op_array);
zval *local_retval=NULL;

va_start(files, file_count);
for (i=0; i<file_count; i++) {
file_handle = va_arg(files, zend_file_handle *);
if (!file_handle) {
continue;
}

prova_main ();

oregon
27-05-2010, 23:25
Ok ... e perchè nel prova.h c'è questo ?

int scanner_start (void);

TecnoSystem
27-05-2010, 23:27
sbagliato a postare
nel file .h
e questo il contenuto
//definisco la variabile
#ifndef _PROVA_H_
#define _PROVA_H_
//inizializzo la variabile int
int prova_main (void);
#endif

oregon
27-05-2010, 23:31
A parte che non ci sono variabili (come dici nei commenti) questo va meglio.

Come compili il tutto?

Loading