Hello folks,
I am successfully using libtcc in an application. I'm very happy with it and
I thank you for providing this awesome tool.
So far, my needs were basically completely covered by the libtcc_test.c
example program that uses tcc_add_symbol() to give the compiled program
access to a function that exists in the host application (I'm sorry if my
terminology is off here). However, now I have a case where I need to give
the client application (the program that gets compiled) access to a variable
that already exists in the host application.
Specifically, my client program
needs a pointer to a struct that already exists in the host application
during runtime. This is a basic illustration of what's going on:
// Struct declaration (known in the host program and the client program)
typedef struct myStruct_t {
.
} myStruct;
// Creating an instance of said struct in the host program
myStruct a;
// Using that struct in the client program (this gets compiled by libtcc)
myFunct(&a);
When I compile this with libtcc, I get the compilation error "a is
undeclared". Initially I was confused by that because I properly added the
struct instance using this: tcc_add_symbol(s, "a", &a);
However, upon thinking about it (and reading the documentation) I figured
out that tcc_add_symbol only affects linking time and the tcc compiler
simply doesn't know what a is.
My question: Is there any way to give a client program access to a variable
that exists in the host program? All I could think of so far is generating a
wrapper function that gets compiled with the client program that returns a
pointer to a. However, I'd like to avoid that if possible.
Any kind of comments would be greatly appreciated.
Best regards,
~ Joel Bodenmann
------------------------------------------------------------------------
_______________________________________________
Tinycc-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/tinycc-devel