Re: Liniking problem

Dunmer <[email protected]>
Newsgroups gmane.mail.spam.spf.discuss
Message-ID <[email protected]>
Thank you very much Jasper!

I can compile and link your foo.c without any problem, but I really don't
understand how it is possible.
Still can't compile my code and it's basically the same as yours, but in
three files (.h, .cpp and hello world main).

One diference:
You are using just #include <spf2/spf.h>, I'm using:

#include <spf2/spf.h>
#include <spf2/spf_dns.h>
#include <spf2/spf_dns_cache.h>
#include <spf2/spf_dns_resolv.h>

If I omit those 3, i got this error on compilation (so i don't even get to
linking):

Building file: ../src/SpfResolver.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/SpfResolver.d"
-MT"src/SpfResolver.d" -o"src/SpfResolver.o" "../src/SpfResolver.cpp"
../src/SpfResolver.cpp: In constructor
‘CstpSpf::SpfResolver::SpfResolver()’:
../src/SpfResolver.cpp:14:69: error: ‘SPF_dns_resolv_new’ was not declared
in this scope
../src/SpfResolver.cpp:16:95: error: ‘SPF_dns_cache_new’ was not declared in
this scope
../src/SpfResolver.cpp:17:65: error: ‘SPF_dns_set_conserve_cache’ was not
declared in this scope
make: *** [src/SpfResolver.o] Error 1

Missing space after -o isn't problem if you use quotes.
nm output contains ‘SPF_dns_resolv_new’,  ‘SPF_dns_cache_new’
and  ‘SPF_dns_set_conserve_cache’ too..

I'm attaching my three files, please look at them and try compile them,
maybe you will see where's the problem, because I am little desperate.
Thank you!

2010/11/22 Jasper Wallace <[email protected]>

> On Sun, 21 Nov 2010, Dunmer wrote:
>
> > Hello,
> >
> > Sorry for bother you again with lame question, but I'm stuck on linking
> with
> > libspf2.
> >
> > I got these errors:
> >
> > g++ -L/usr/local/lib -o"CstpSpf"  ./src/SpfResolver.o ./src/cstp_spf.o
> > -lspf2
> > ./src/SpfResolver.o: In function `SpfResolver':
> > /home/dunmer/workspace/CstpSpf/Debug/../src/SpfResolver.cpp:14: undefined
> > reference to `SPF_dns_resolv_new(SPF_dns_server_struct*, char const*,
> int)'
> > /home/dunmer/workspace/CstpSpf/Debug/../src/SpfResolver.cpp:16: undefined
> > reference to `SPF_dns_cache_new(SPF_dns_server_struct*, char const*, int,
> > int)'
> > /home/dunmer/workspace/CstpSpf/Debug/../src/SpfResolver.cpp:17: undefined
> > reference to `SPF_dns_set_conserve_cache(SPF_dns_server_struct*, int)
> >
> > With this simple code:
> >
> > this->spfResolvServer = SPF_dns_resolv_new(NULL, "spfResolv", DEBUG);
> > this->spfCacheServer = SPF_dns_cache_new(this->spfResolvServer,
> "spfCache",
> > DEBUG, CACHE_SIZE);
> > SPF_dns_set_conserve_cache(this->spfCacheServer, CACHE_CONSERVE);
> >
> > DEBUG, CACHE_CONSERVE and CACHE_SIZE are my constants.
> > I have built and installed libspf and its located in /usr/local/lib. I
> tried
> > to move it to the /usr/lib with no success. I'm using Eclipse for C/C++
> and
> > I have set libspf2 in libraries.
> > What am I doing wrong? Google didn't help. And what is with libspf2.org?
> >
> > I will really appreciate your help. Thank you very much!
>
> Not sure whats going on, libspf2 has those symbols on my box and i can
> link a simple program (attached) with:
>
> gcc -o fish -I/usr/local/include -L/usr/local/lib -lspf2 foo.c
>
> It could be that your -o"CstpSpf" is being miss interpreted and needs a
> space?
>
> P.S. you can use 'ldd' to see which libraries a lib or binary is linked
> against and 'nm' to see which symbols a library or program exports or
> defines.
>
> --
> [http://pointless.net/]                                   [0x2ECA0975]



-------------------------------------------
Sender Policy Framework: http://www.openspf.org [http://www.openspf.org]
Modify Your Subscription: http://www.listbox.com/member/ [http://www.listbox.com/member/]

Archives: https://www.listbox.com/member/archive/735/=now
RSS Feed: https://www.listbox.com/member/archive/rss/735/6959934-50ec8f89
Modify Your Subscription: https://www.listbox.com/member/?member_id=6959934&id_secret=6959934-b7c4528d
Unsubscribe Now: https://www.listbox.com/unsubscribe/?member_id=6959934&id_secret=6959934-edadf31a&post_id=20101122062134:A8D0E54E-F62A-11DF-98BC-8B776BDBCF6D
Powered by Listbox: http://www.listbox.com
cstp_spf.cpp (text/x-c++src, 449 B)
//============================================================================
// Name        : CstpSpf.cpp
// Author      : Gabriel
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include "SpfResolver.h"
using namespace std;

int main() {

	cout << "!!!Hello World!!!" << endl;
	return 0;
}
SpfResolver.h (text/x-chdr, 482 B)
/*
 * SpfResolver.h
 *
 *  Created on: Nov 17, 2010
 *      Author: dunmer
 */

#ifndef SPFRESOLVER_H_
#define SPFRESOLVER_H_

#include <stdio.h>

#include <netinet/in.h>

// SPF2 includes
#include <spf2/spf.h>

namespace CstpSpf {

#define DEBUG 0
#define CACHE_SIZE 10
#define CACHE_CONSERVE 1

class SpfResolver {
public:
	SpfResolver();
	virtual ~SpfResolver();

private:
	SPF_dns_server_t *spfCacheServer;
	SPF_dns_server_t *spfResolvServer;
};

}

#endif /* SPFRESOLVER_H_ */
SpfResolver.cpp (text/x-c++src, 548 B)
/*
 * SpfResolver.cpp
 *
 *  Created on: Nov 17, 2010
 *      Author: dunmer
 */

#include "SpfResolver.h"

namespace CstpSpf {

SpfResolver::SpfResolver() {
	//set bottom layer - real spf dns resolver
	this->spfResolvServer = SPF_dns_resolv_new(NULL, "SpfResolv", DEBUG);
	//set top layer - spf dns cache
	this->spfCacheServer = SPF_dns_cache_new(this->spfResolvServer, "spfCache", DEBUG, CACHE_SIZE);
	SPF_dns_set_conserve_cache(this->spfCacheServer, CACHE_CONSERVE);
}

SpfResolver::~SpfResolver() {
	// TODO Auto-generated destructor stub
}

}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.