[Samba] VFS module and C++

Laurent Pinchart laurent.pinchart at skynet.be
Wed Feb 28 22:14:44 GMT 2007


Hi Roman,

> I need to write a simple VFS module and I have to use C++ instead of C.
> I took sample files, compiled it and everything does work. However, when
> I compile it as C++, during the runtime I can see errors in the log:
> Can't find a vfs module.
> I am not experienced C or C++ programmer in linux environment, probably
> I do some silly mistake, but I am really stucked now. I am using Samba
> version 3.0.23a. Thanks for any help.
> Roman
>
> The fragment of the code looks like this:
>
> extern "C" {
>  #include "includes.h"
> };
>
> # skeleton methods, tuples are there...
>
> extern "C" {
> NTSTATUS init_module(void)
> {
>         DEBUG(2,("Inicialization does work"));
>         return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "mytest_vfs",
> skel_op_tuples);
> }
> };
>
>
> And my Makefile:
> CC              = gcc

This doesn't look good. You need to use g++ to compile C++.

> CFLAGS          = -g -O2
> CPPFLAGS        =
> LDFLAGS         =
> LDSHFLAGS       = -shared
> INSTALLCMD      = /usr/bin/install -c
> SAMBA_SOURCE    = ../../source
> SHLIBEXT        = so
> OBJEXT          = o
> FLAGS           = $(CFLAGS) -Iinclude -I$(SAMBA_SOURCE)/include
> -I$(SAMBA_SOURCE)/popt -I$(SAMBA_SOURCE)/smbwrapper  -I. $(CPPFLAGS)
> -I$(SAMBA_SOURCE) -I/home/roman/ace/ACE_wrappers/TAO/tao -fPIC
>
>
> prefix          = /usr/local/samba
> libdir          = ${prefix}/lib
>
> VFS_LIBDIR      = $(libdir)/vfs
>
> # Auto target
> default: $(patsubst %.cpp,%.$(SHLIBEXT),$(wildcard *.cpp))
>
> # Pattern rules
>
> %.$(SHLIBEXT): %.$(OBJEXT)
>         @echo "Linking $@"
>         @$(CC) $(LDSHFLAGS) $(LDFLAGS) -o $@ $<
>
> %.$(OBJEXT): %.cpp
>         @echo "Compiling $<"
>         @$(CC) $(FLAGS) -c $<
>
>
> install: default
>         $(INSTALLCMD) -d $(VFS_LIBDIR)
>         $(INSTALLCMD) -m 755 *.$(SHLIBEXT) $(VFS_LIBDIR)
>
> # Misc targets
> clean:
>         rm -rf .libs
>         rm -f core *~ *% *.bak *.o *.$(SHLIBEXT)
>
> distclean: clean
>         rm config.* Makefile

Laurent Pinchart


More information about the samba mailing list