OK I've fixed it. All you need to be able to link the agent in to a C++ application, is a small change to the Makefiles in the agent and apps directories. When linking the Makefile needs to give g++ as the first "argument" to libtool, rather than gcc. Below is a patch file for fixing the two make files. Note this isn't a patch on the NetSNMP distribution, but on the Makefiles themselves, so you'll need to run the patch twice - once on each of the two Makefiles. Note also that the NetSNMP Makefiles are autogenerated by the ./configure command, so you'll need to repatch the makefiles every time you do ./configure.

Given the number of times that C++ has come up before on this list, I hope this fix will be useful to folk!

The real fix for this needs the code which autogenerates the Makefiles to be changed, so that ./configure produces the patched version of the Makefiles. Once that's done, NetSNMP should work with C++ out of the box. All the application developer then needs to do is provide a C wrapper interface around the C++ application, which the agent can then use.

I hope this helps. Cheers

Raffles

--- Makefile    2006-01-27 11:28:49.245467235 +0000
+++ Makefile.bis        2006-01-27 11:29:57.149984444 +0000
@@ -51,6 +51,7 @@

 # Misc Compiling Stuff
 CC             = gcc
+LINKCC         = g++

 # use libtool versioning the way they recommend.
 # The (slightly clarified) rules:
@@ -68,11 +69,11 @@
 LIBAGE      = 0
 LIBREVISION = 0

-LIB_LD_CMD = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) -o +LIB_LD_CMD = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) -o
 LIB_EXTENSION   = la
 LIB_VERSION     =
 LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(libdir)
-LINK           = $(LIBTOOL) --mode=link $(CC)
+LINK           = $(LIBTOOL) --mode=link $(LINKCC)
 # RANLIB       = ranlib
 RANLIB         = :


Raffles wrote:
Hi There,

I'm trying to use NetSNMP to monitor a software system which is written in C++.

I've created a C wrapper for the API to the C++ application, and written a mib2c config file to generate code which calls the API to get/set the information it needs. I've stuck the mib2c output into the agent/mibgroup directory and ./configured NetSNMP to use my MIBs.

When I do the top level make, everything compiles fine, but it doesn't link. The problem is that the linker is wondering what on earth "new" and "delete" are, not to mention autogenerated identifiers to do with virtual tables. As far as I can see the only problem here is that the makefile needs to do C++ linking, not C linking. However, I couldn't see any way to specify the linker in the config file.

I noticed that the linktool file is auto-generated, so presumably there is a way to fix this in the configure script (which presumably auto-generates it)? Any other solutions also welcome.

I tried trawling through the archives, and found lots of C++ type questions, but none which answered this one. If I missed it, just point me =)

Thanks in advance.

Raffles


--

Visit our website at www.roke.co.uk

Roke Manor Research Ltd, Roke Manor, Romsey, Hampshire SO51 0ZN, UK.

The information contained in this e-mail and any attachments is proprietary to
Roke Manor Research Ltd and must not be passed to any third party without
permission. This communication is for information only and shall not create or
change any contractual relationship.



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
Net-snmp-users mailing list
Net-snmp-users@lists.sourceforge.net
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users

Reply via email to