Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Win32 compilation broken (MSVC2008, OpenMPI1.4.1)
From: T. Farago (farago1_at_[hidden])
Date: 2010-01-19 06:08:33

Is the windows build actually working? I have the static library
version working correctly, however shared libraries give linker errors
when compiling an MPI application. It seems libmpi_cxx.lib doesn't
export any functions, only constant data members (checked through
dependency walker of libmpi_cxx.dll and dumpbin of libmpi_cxx.lib)

Eg in a very simple MPI application I get unresolved external symbols
about MPI::Datatype::Free, MPI::Win::Free, MPI::Comm::Comm and
ompi_mpi_cxx_op_intercept. I am linking to libmpi.lib and
libmpi_cxx.lib, both of which have been built with the CMake solution
where the only changes were the enabling of heterogeneous support, the
one in osc_rdma_data_move.c and setting Link Library Dependencies to
yes as per my previous mail.

2010/1/19 T. Farago <farago1_at_[hidden]>:
> Information: Windows XP SP3 x86, MSVC 2008 Professional, openmpi 1.4.1
> There is a compile error if I enable heterogeneous support, see error
> message below. The relevant line is:
> payload=  (void*)malloc(buflen);
> ompi/mca/osc/rdma/osc_rdma_data_move.c(1059): error C2440: '=': cannot
> convert from 'void *' to 'void **'
> gcc doesn't complain, I've changed void* to void** which seems to
> "fix" the problem
> Also when generating the MSVC2008 project files through CMake (2.8.0)
> there are linker errors for all the project files. libopen-pal.lib and
> libopen-rte.lib aren't linked in with the other projects. I couldn't
> fnd anything in CMake to fix this, so I manually edited each project
> file to change LinkLibraryDependencies to TRUE which for some reason
> is set to FALSE by CMake. The relevant option in Visual Studio is in
> Configuration Properties > Linker > General > Link Library
> Dependencies. I am not familiar with CMake so unfortunately I can't
> offer a proper solution.