[Mono-devel-list] Mono runtime for C compilation problem
André Fontenele
andre at ironhousefund.com
Fri Aug 27 10:10:20 EDT 2004
Thank you, man. It worked perfectly.
On Thu, 2004-08-26 at 18:27, Zoltan Varga wrote:
> Hi,
>
> The mono embedding interfaces have changed before 1.0 was released, so
> the runtime structures are now opaque, this means a program can't access
> assembly->image, it needs to use a runtime provided function for this.
> See the mono include files for a list of functions. For example, assembly->image
> is now mono_assembly_get_image ().
>
> Zoltan
>
> On Thu, 26 Aug 2004 14:52:36 -0300, André Fontenele
> <andre at ironhousefund.com> wrote:
> > Help!
> >
> > I've been trying to run some routines on mono so that I can use them on
> > my PostgreSQL Linux server as a stored procedure. Since there seems to
> > be no way to do this directly, I decided to do it with the
> > /usr/include/mono/ libraries on the runtime-devel rpm: C# -> Mono
> > Runtime -> C -> libpq -> PostgreSQL.
> > The problem is with the Mono Runtime -> C part. I got this sample
> > (attached) from a list and tried to compile it in a thousand of
> > different ways, but it keeps giving me this error:
> >
> > > /franke/a.c: In function `setup':
> > > /franke/a.c:35: error: dereferencing pointer to incomplete type
> > > /franke/a.c: In function `main':
> > > /franke/a.c:67: error: dereferencing pointer to incomplete type
> >
> > For some reason, the compiler isn't able to access the structs inside
> > the libraries. I reinstalled the libraries from the scratch...
> > I'm stuck in this problem for days now :.(
> > Can anyone give me an idea on what may be wrong? Or send me another
> > example of what worked when you tried to use the mono runtime in C
> > programs? I tried the example on the mono site, but that didn't help
> > much, since the code seems to use the same structs...
> >
> > Txs,
> > Andre Fontenele
> > IronHouse Fund
> >
> > #include <mono/mini/jit.h>
> > #include <mono/metadata/environment.h>
> > #include <mono/metadata/debug-helpers.h>
> > #include <mono/metadata/loader.h>
> > #include <mono/metadata/mono-debug.h>
> >
> > static MonoDomain *domain;
> > static MonoAssembly *assembly;
> >
> > /*
> > * Very simple mono embedding example.
> > * Compile with:
> > * gcc -o teste teste.c `pkg-config --cflags --libs mono` -lm
> > * mcs test.cs
> > * Run with:
> > * ./teste test.exe
> > */
> > static void setup()
> > {
> > assembly = mono_domain_assembly_open(domain, "test.dll");
> > if(assembly==NULL)
> > {
> > printf("could not load assembly\n");
> > mono_environment_exitcode_set(-1);
> > }
> > else
> > {
> > printf("assembly loaded succesfully\n");
> > mono_debug_init_2(assembly);
> > domain->entry_assembly=assembly; //HERE'S THE PROBLEM!!!
> > mono_environment_exitcode_set(0);
> > }
> > }
> >
> > int main(int argc, char* argv[])
> > {
> > //MonoClass * class;
> > //MonoDomain *domain;
> > MonoMethod *method;
> > MonoMethodDesc *methodDesc;
> > //MonoObject *returnedMonoObject;
> > gpointer params[1];
> >
> > domain = mono_jit_init ("TestDomain");
> > if(domain == NULL)
> > {
> > printf("could not init domain\n");
> > return 0;
> > }
> > mono_debug_init(domain, MONO_DEBUG_FORMAT_MONO);
> > mono_runtime_exec_managed_code(domain, setup, NULL);
> >
> > // Create the method description
> > methodDesc = mono_method_desc_new("TestNamespace.test:foo", TRUE);
> > if(!methodDesc)
> > printf("Error in creating methodDesc \n");
> > else
> > printf("methodDesc created succesfully\n");
> >
> > // Search the above method description in image
> > method = mono_method_desc_search_in_image(methodDesc, assembly->image);
> > //AND HERE TOO!!!
> > if(!method)
> > printf("Method could not be located in class \n");
> > else
> > printf("Method located successfully\n");
> >
> > // invoke method
> > params[0]= mono_string_new(domain, "TestFile.txt");
> > mono_runtime_invoke(method, NULL, params, NULL );
> >
> > mono_jit_cleanup (domain);
> > return 1;
> > }
> >
> > _______________________________________________
> > Mono-devel-list mailing list
> > Mono-devel-list at lists.ximian.com
> > http://lists.ximian.com/mailman/listinfo/mono-devel-list
> >
More information about the Mono-devel-list
mailing list