Gee, that's too bad. I assumed that the 1.6.4 Windows build was delayed
because it was a lower priority. Do you suppose this position was taken
because there are no developers wishing to keep it alive? 


-----Original Message-----
From: users-boun...@open-mpi.org [mailto:users-boun...@open-mpi.org] On
Behalf Of Damien Hocking
Sent: Thursday, February 21, 2013 10:00 AM
To: Open MPI Users
Subject: Re: [OMPI users] Windows C++ Linker Error "unresolved symbol" for
MPI::Datatype::Free

Well this is interesting.  The linker can't find that because
MPI::Datatype::Free isn't implemented on the Windows build (in
datatype_inln.h).  It's declared in datatype.h though.  It's not there in
the Linux version either, so I don't know where the Linux build is getting
that symbol from, that link should fail too.  Is the C++ version of OpenMPI
actually broken overall?

The Windows support is another issue.  I think it's semi-officially
deprecated.

Damien

On 20/02/2013 11:20 PM, Hartman, Todd W. wrote:
> I'm trying to build a simple Open MPI application for Windows. I've
installed the binaries for OpenMPI-v1.6.2 (64-bit). I've also installed
Visual Studio 2010. The machine(s) are Windows 7 x64.
>
>
> When I attempt to compile a simple program that uses MPI::Send(), I get a
linker error saying that it cannot resolve MPI::Datatype::Free().
>
> Here's a minimal example:
>
> ---------------------------------------------------
> #include <mpi.h>
> #include <iostream>
> int main( int argc, char** argv ) {
>      MPI::Init(argc,argv);
>
>      // Meant to run with 2 processes.
>      if (MPI::COMM_WORLD.Get_rank() == 0) {
>          int data;
>          MPI::COMM_WORLD.Recv(&data,1,MPI_INT,1,0);
>          std::cout << "received " << data << std::endl;
>      } else {
>          int data = 0xdead;
>          std::cout << "sending " << data << std::endl;
>          MPI::COMM_WORLD.Send(&data,1,MPI_INT,0,0);
>      }
>
>      MPI::Finalize();
> }
> ---------------------------------------------------
>
> When I compile it:
>
> mpic++ send_compile.cpp -o send_compile.exe -DOMPI_IMPORTS 
> mpic++ -DOPAL_IMPORTS -DORTE_IMPORTS
>
>
> ---------------------------------------------------
> Microsoft (R) C/C++ Optimizing Compiler Version 16.00.40219.01 for x64 
> Copyright (C) Microsoft Corporation.  All rights reserved.
>
>
>
>
> cl : Command line warning D9035 : option 'o' has been deprecated and 
> will be removed in a future release send_compile.cpp Microsoft (R) 
> Incremental Linker Version 10.00.40219.01 Copyright (C) Microsoft 
> Corporation.  All rights reserved.
>
> /out:send_compile.exe
> /out:send_compile.exe
> "/LIBPATH:C:\Program Files (x86)\OpenMPI_v1.6.2-x64/lib"
> libmpi_cxx.lib
> libmpi.lib
> libopen-pal.lib
> libopen-rte.lib
> advapi32.lib
> Ws2_32.lib
> shlwapi.lib
> send_compile.obj
> send_compile.obj : error LNK2001: unresolved external symbol "public: 
> virtual void __cdecl MPI::Datatype::Free(void)" 
> (?Free@Datatype@MPI@@UEAAXXZ) send_compile.exe : fatal error LNK1120: 
> 1 unresolved externals
> ---------------------------------------------------
>
> This program compiles and runs without complaint on an Ubuntu machine
around here. I don't know what the problem is. Open MPI's documentation
didn't say anything about adding the CPP defines (OMPI_IMPORTS,
OPAL_IMPORTS, ORTE_IMPORTS) whose absence were causing other linker errors
similar to this. Google found some items in the mailing list archive. I
cannot find any information about this particular problem, though.
>
> I tried using dumpbin to get symbols that were in the .lib files installed
by MPI, but didn't find any reference to that function name. I didn't find
any answers looking in the MPI headers, either.
>
> I have a similar program in C that compiles and runs fine on this Windows
machine. I don't know what I'm doing wrong with C++. Can someone point me in
the right direction? Is there some documentation regarding getting things to
work on Windows? The release notes don't address this problem, and I can't
find any other documentation related to what might be different from *nix to
Windows (WRT to Open MPI).
>
> Thanks.
>
>
> todd.
>
> P.S. This is copied from a StackOverflow question I posted
(http://stackoverflow.com/questions/14988099/open-mpi-c-link-error-mpidataty
pefree-on-windows). Forgive the cross-posting.
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users

_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to