Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI users] Windows C++ Linker Error "unresolved symbol" for MPI::Datatype::Free
From: Ralph Castain (rhc_at_[hidden])
Date: 2013-02-21 12:26:43


On Feb 21, 2013, at 9:13 AM, "Hartman, Todd W." <thartman_at_[hidden]> wrote:

> 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?

Afraid that is true. However, the cygwin folks have provided a cygwin package, so there is at least an option that work on Windows.

>
>
> -----Original Message-----
> From: users-bounces_at_[hidden] [mailto:users-bounces_at_[hidden]] 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_at_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
>> users_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users