[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
damned linker wont eat my function 'main' ! :-(
From: |
Michael Shestero |
Subject: |
damned linker wont eat my function 'main' ! :-( |
Date: |
Wed, 21 Apr 2004 01:08:57 -0700 |
FreeBSD 4.0, gcc 2.95.x
mybsd# make
c++ -I/usr/X11R6/include/ -O -c lispdemo.cpp
In file included from memman.h:24,
from lispcore.h:4,
from lispdemo.cpp:3:
memory.h:1: warning: `#pragma once' is obsolete
lispdemo.cpp: In function `class Reference gl_line(MemoryManager &,
Reference)':
lispdemo.cpp:58: warning: `double' used for argument 1 of `Line(int, int,
int, int)'
lispdemo.cpp:58: warning: `double' used for argument 2 of `Line(int, int,
int, int)'
lispdemo.cpp:58: warning: `double' used for argument 3 of `Line(int, int,
int, int)'
lispdemo.cpp:58: warning: `double' used for argument 4 of `Line(int, int,
int, int)'
g++ -o lispdemo -lm -L/usr/X11R6/lib -lX11
/usr/lib/crt1.o: In function `_start':
/usr/lib/crt1.o(.text+0x79): undefined reference to `main'
*** Error code 1
:-((
Here is my Makefile:
##############################################################
# Makefile voor de grafische routine voorbeeld programma's
#
# de opdracht `make all' compileert en linkt alle programma's.
##############################################################
### Compiler en linker flags ####
CFLAGS = -I/usr/X11R6/include/ -O
### systemen met dynamische link:
LDFLAGS = -lm -L/usr/X11R6/lib -lX11
### systemen zonder dynamische link:
# LDFLAGS = -lm -lX11
### haal '#' weg om op b.v. Linux of AIX machine te compileren.
CC = gcc
CPP = g++
#############################################################
#IMPORTANT!!! The following environment variable must be set#
#for demo's to work with dynamic libraries: #
# #
# LD_LIBRARY_PATH = ;/usr/local/X11/lib #
# #
#On some systems this will be: #
# #
# LD_LIBRARY_PATH = ;/usr/X11/lib #
# #
#############################################################
all: lispdemo
lispdemo: lispdemo.o graphics.o symbcell.o ufuncell.o funccell.o lispcore.o
listcell.o memman.o parser.o refer.o bfuncell.o
$(CPP) -o lispdemo $^ $(LDFLAGS)
%.o:%.cpp
$(CPP) -o $@ -c $^ $(CFLAGS)
%.o:%.c
$(CC) -o $@ -c $^ $(CFLAGS)
clear:
rm *.o
rm -f *.exe
----------------------------
All sources have .cpp extention and are C++ programms.
Here is the "main" source file:
// main file
#include "graphics.h"
#include "lispcore.h"
#include "parser.h"
#include <stdio.h>
#define EvalArgs args=MemManager.EvalListArgs(args);
#define arg(n) (MemManager.nth(n, args))
int gl_MyDrawProc (Display*, Drawable, GC);
char *gl_lspfile; // lisp source file for store
LISPFUNC (gl_color);
LISPFUNC (gl_line);
int main(int argc, char* argv[])
{
if (argc!=2)
{
perror("lispdemo need the parameter: lisp-file name");
return 1;
}
gl_lspfile = argv[1];
DrawProc = gl_MyDrawProc;
Graphics (450, 450, "LISP Demo: graphics board");
return 0;
}
int gl_MyDrawProc (Display* disp, Drawable pm, GC gc)
{
PutText (5, 10, gl_lspfile);
LispCore* m = new LispCore();
m->AddBuildInFunc("line", 4, &gl_line);
m->AddBuildInFunc("color",1, &gl_color);
m->Eval( Parser(m).Load( gl_lspfile ) );
delete m;
return DONE;
}
LISPFUNC(gl_line)
{
EvalArgs;
int err = 0;
double x1 = MemManager.GiveMeDouble( arg(0), "line: 1st", &err);
double y1 = MemManager.GiveMeDouble( arg(1), "line: 2nd", &err);
double x2 = MemManager.GiveMeDouble( arg(2), "line: 3rd", &err);
double y2 = MemManager.GiveMeDouble( arg(3), "line: 4th", &err);
if (!err)
{
Line(x1,y1,x2,y2);
return MemManager.T();
}
else return MemManager.NIL();
}
LISPFUNC (gl_color)
{
EvalArgs;
int err = 0;
double c = MemManager.GiveMeDouble( arg(0), "color:", &err);
if (!err)
{
// XSetForeground(display, gc, (long int c));
return MemManager.T();
}
else return MemManager.NIL();
}
---------------------
LISPFUNC is a macro.
Any ideas??
Michael Shestero
- damned linker wont eat my function 'main' ! :-(,
Michael Shestero <=