It seems Microsoft C++ compiler could recognize what the code wants to do, while Intel C++ compiler couldn't. I know a solution for this kind of problem, but it involves some code base changes,  I need some time to test it. At moment, if you want to use Intel C++ compiler, the dirty solution is just changing "OMPI_DECLSPEC" in ompi/mpi/cxx/functions.h to "__declspec(dllexport)". Or you could switch to use Microsoft compiler only for this libmpi_cxx project.


On 2010-4-15 9:52 AM, Ben.Kuppers@shell.com wrote:



When I use 1.4.2rc1 I am able build in Visual Studio 2005 (CMake 2.6.4 default settings VS2005 x64)but I get the following warning (among others):


11>..\..\..\..\..\ompi\mpi\cxx\intercepts.cc(81) : warning C4273: 'MPI::InitializeIntercepts' : inconsistent dll linkage

11>        E:\source\openmpi-1.4.1\ompi/mpi/cxx/functions.h(64) : see previous definition of 'InitializeIntercepts'


When I convert the Visual Studio projects to use the Intel 10.1 compiler (required for our production environment) this warning becomes an error:


11>E:\source\openmpi-1.4.2rc1\ompi\mpi\cxx\intercepts.cc(80): error: a function declared "dllimport" may not be defined

11>  MPI::InitializeIntercepts()


This issue seems related to http://www.open-mpi.org/community/lists/users/2010/03/12392.php.


It appears to me that you are trying to use a single symbol to import from the c module and export from cxx module at the same time.


Any help would be appreciated,



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

Shiqing Fan                          http://www.hlrs.de/people/fan
High Performance Computing           Tel.: +49 711 685 87234
  Center Stuttgart (HLRS)            Fax.: +49 711 685 65832
Address:Allmandring 30               email: fan@hlrs.de    
70569 Stuttgart