help-gnucap
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-gnucap] Help-gnucap Digest, Vol 88, Issue 6


From: romain . gailleton
Subject: Re: [Help-gnucap] Help-gnucap Digest, Vol 88, Issue 6
Date: Tue, 22 Jan 2013 09:46:44 +0100
User-agent: Roundcube Webmail/0.8.4

Hi Felix,

hi Romain.

On Mon, Jan 21, 2013 at 05:16:53PM +0100, address@hidden wrote:
I've been trying to do some plugins following this link :

http://www.gnucap.org/dokuwiki/doku.php?id=gnucap:manual:tech:plugins:coding

there seems to be something wrong with that wiki page.


That's what I came to thought

fake_function.h :
class FAKE_FUNCTION {
public:
  virtual std::string  eval(double arg)const = 0;
};

better use u_function.h and inherit from FUNCTION, then
DISPATCHER<FUNCTION>::INSTALL [...] makes more sense


I don't know if I told you about this i'm using MinGW to compile with GCC 4.4.x

I tried this earlier but didn't really help. So I retried today to be sure and I came up with this fake_function.cpp :

#include <iostream>
#include <cmath>
#include <string>
#include "u_function.h"
#include "l_lib.h"
#include "globals.h"

extern INTERFACE DISPATCHER<FUNCTION> function_dispatcher; // tried to redeclare this as an extern to try to solve the undefined reference to `function_dispatcher'. Not really useful...

const std::string abc ("aba"); // had to put that because it won't take it in the DISPATCHER line otherwise with my toolchain ("abc" is sometimes, somehow detected as char abc [4])

class ABAS : public FUNCTION {
public:
virtual std::string eval(CS& Cmd, const CARD_LIST*)const { return to_string(std::abs(5)); }

protected:
  WAVE* find_wave(const std::string& probe_name)const;

}p;

DISPATCHER<FUNCTION>::INSTALL d1(&function_dispatcher, abc, &p);

When i compile as Dynamic library :

those are the errors :
Linking dynamic library: bin\Release\tb.dll
obj\Release\fake_function.o:fake_function.cpp:(.text+0x32c): undefined reference to `function_dispatcher' obj\Release\fake_function.o:fake_function.cpp:(.text+0x369): undefined reference to `function_dispatcher' obj\Release\fake_function.o:fake_function.cpp:(.text+0x429): undefined reference to `function_dispatcher' obj\Release\fake_function.o:fake_function.cpp:(.text+0x57f): undefined reference to `error(int, std::string const&)' obj\Release\fake_function.o:fake_function.cpp:(.text+0x601): undefined reference to `function_dispatcher' obj\Release\fake_function.o:fake_function.cpp:(.text+0x998): undefined reference to `error(int, std::string const&)' obj\Release\fake_function.o:fake_function.cpp:(.text+0xa41): undefined reference to `function_dispatcher' obj\Release\fake_function.o:fake_function.cpp:(.text+0xc7a): undefined reference to `function_dispatcher' obj\Release\fake_function.o:fake_function.cpp:(.text+0x1275): undefined reference to `function_dispatcher' obj\Release\fake_function.o:fake_function.cpp:(.text+0x13be): undefined reference to `function_dispatcher' obj\Release\fake_function.o:fake_function.cpp:(.text+0x1405): undefined reference to `function_dispatcher'

Still I have this :

Creating library file: bin\Release\libtb.dll.a
Process terminated with status 1 (0 minutes, 0 seconds)
11 errors, 0 warnings

The file libtb.dll.a is update but
regarding the previous errors this hardly makes much sens to me...
Moreover i can't load it into gnucap because it has some exec format error which seem consistant.

If i try to compile this without this line : DISPATCHER<FUNCTION>::INSTALL d1(&function_dispatcher, abc, &p); This compiles "nicely", i have my tb.dll and i can load it into gnucap but can't exploit it since it is not in the DISPATCHER :)

Creating a static library with the DISPATCHER line works (but is no use... for gnucap) :

Any thoughts ? ^^

have fun

sure will thanks!

felix

Romain.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]