[Paraview-developers] Linker error building Fortran90FullExample

thomasblome at startmail.com thomasblome at startmail.com
Fri Nov 11 14:50:39 EST 2016


To resolve the references inclusion of header files 
"CPythonAdaptorAPI.h" and "CAdaptorAPI.h" in FECxxAdaptor.cxx was 
required, as they declare the missing functions.
Afterwards, I provided the corresponding procedure interfaces in the 
Fortran files and finally got through the static linking stage.

Now, when I start the RUN_TESTS project, the Fortran90FullExampleTest 
fails due to a segmentation fault:

1/1 Test #1: Fortran90FullExampleTest .........***Exception: SegFault  
8.48 sec
1>
1>  0% tests passed, 1 tests failed out of 1
1>
1>  Label Time Summary:
1>  CATALYST    =   8.48 sec (1 test)
1>  PARAVIEW    =   8.48 sec (1 test)
1>
1>  Total Test time (real) =   8.48 sec
1>
1>  The following tests FAILED:
1>        1 - Fortran90FullExampleTest (SEGFAULT)
1>  Errors while running CTest
1>C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): 
error MSB3073: The command "setlocal
1>C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): 
error MSB3073: C:\cmake\bin\ctest.exe --force-new-ctest-process -C 
Debug
1>C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): 
error MSB3073: if %errorlevel% neq 0 goto :cmEnd
1>C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): 
error MSB3073: :cmEnd
1>C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): 
error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto 
:cmDone
1>C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): 
error MSB3073: :cmErrorLevel
1>C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): 
error MSB3073: exit /b %1
1>C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): 
error MSB3073: :cmDone
1>C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): 
error MSB3073: if %errorlevel% neq 0 goto :VCEnd
1>C:\Program Files 
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): 
error MSB3073: :VCEnd" exited with code 8.

Does anybody know how to solve this?

Best,
Thomas

 
Am Donnerstag, 10. November 2016 19:10 schrieb 
thomasblome at startmail.com:
 
> Hi Andy,
> 
> The linker error concerning the missing main method was due to a 
> wrong solution setup of the Fortran90FullExample in VS.
> The CMakeLists file provided generates only one single (C++) project 
> in VS, which means all .f90 files will be ignored by the compiler 
> (it's impossible to have a single Fortran/C++ mixed language project 
> in VS).
> To solve this I had to configure the CMakeLists file to create a 
> library from FECxxAdaptor.cxx and link it with the 
> Fortran90FullExample.
> 
> Other linker & compiler errors occurred with regards to mpi:
> 1) the target_link_libraries command  in the CMakeLists file links 
> ${MPI_Fortran_LIBRARIES} to the fortran project,
> but it forgets to link with msmpifec.lib (see also: 
> http://public.kitware.com/pipermail/cmake/2016-February/062861.html).
> 2) The specification of an include directory (containing header 
> mpifptr.h) was missing.
> 
> Another problem arose when it comes to the the by hand name mangling 
> for fortran in FECxxAdaptor.cxx.
> To get rid of that I introduced function interfaces in the 
> FEFortranAdaptor.f90 file and now it works independently of the 
> Fortran compiler used.
> 
> Now, there are only five remaining linker errors as shown below:
> 
> LNK2019: unresolved external symbol COPROCESS referenced in function 
> TCP_mp_TESTCOPROCESSOR        FEFortranAdaptor.obj        
> LNK2019: unresolved external symbol COPROCESSORINITIALIZEWITHPYTHON 
> referenced in function MAIN__        FEDriver.obj        
> LNK2019: unresolved external symbol COPROCESSORFINALIZE referenced in 
> function MAIN__        FEDriver.obj        
> LNK2019: unresolved external symbol NEEDTOCREATEGRID referenced in 
> function TCP_mp_TESTCOPROCESSOR        FEFortranAdaptor.obj        
> LNK2019: unresolved external symbol REQUESTDATADESCRIPTION referenced 
> in function TCP_mp_TESTCOPROCESSOR        FEFortranAdaptor.obj   
> 
> In the ParaViewCatalystUsersGuide_v2 the missing symbols appear to be 
> declared in CAdaptorAPI.h and CPythonAdaptorAPI.h (but 
> NEEDTOCREATEGRID),
> but I can't just include them in the Fortran code.
> 
> Can you tell me how to resolve those missing references?
> 
> Best,
> Thomas
> 
>  
> Am Mittwoch, 26. Oktober 2016 18:47 schrieb Andy Bauer 
> <andy.bauer at kitware.com>:
>  
>> Hi Thomas,
>>  
>> I really don't know about this. Do you get the same behavior if you 
>> don't link with Catalyst? Can you create a simple helloworld.f90 
>> example that works?
>>  
>> Best,
>> Andy
>>  
>> On Wed, Oct 26, 2016 at 3:39 AM, <thomasblome at startmail.com> wrote:
>>> Hi Andy,
>>> 
>>> I have changed both lines from coproc to main, but the error 
>>> message remains the same.
>>> 
>>> Best,
>>> Thomas
>>>  
>>> Am Montag, 24. Oktober 2016 22:00 schrieb Andy Bauer <andy.bauer at kitware.com>:
>>>  
>>>> Hi Thomas,
>>>>  
>>>> If you change from coproc to main in the "program" and "end 
>>>> program" lines in FEDriver.f90 does that fix the problem?
>>>>  
>>>> I'm working on a fix for this but don't have access to any MSVS 
>>>> compilers.
>>>>  
>>>> Thanks,
>>>> Andy
>>>>  
>>>> On Sat, Oct 22, 2016 at 1:46 PM, <thomasblome at startmail.com> 
>>>> wrote:
>>>>> Hello,
>>>>> 
>>>>> I'm trying to compile the Fortran90FullExample using MSVS (Intel 
>>>>> Fortran Compiler 2017 and Visual C++ 2015 compiler).
>>>>> Doing so I'm getting following linker error:
>>>>> 
>>>>> Error    LNK2019    unresolved external symbol main referenced in 
>>>>> function "int __cdecl __scrt_common_main_seh(void)" 
>>>>> (?__scrt_common_main_seh@@YAHXZ)    Fortran90FullExample.
>>>>> 
>>>>> Obviously, the source code doesn't contain a main method at all, 
>>>>> since the entry point is given by the fortran program in file 
>>>>> 'FEDriver.f90'.
>>>>> Nevertheless, I guess the compiler internally creates a main 
>>>>> method, and the linker cannot resolve the reference due to a name 
>>>>> mangling problem, as there are different compilers involved. But 
>>>>> I'm not quite sure about that, nor how to solve it, at that 
>>>>> matter.
>>>>> 
>>>>> Can you give me a hint how to solve that problem?
>>>>> 
>>>>> Kind regards,
>>>>> Thomas
>>>>> _______________________________________________
>>>>> Powered by www.kitware.com <http://www.kitware.com>
>>>>> 
>>>>> Visit other Kitware open-source projects at 
>>>>> http://www.kitware.com/opensource/opensource.html
>>>>> 
>>>>> Search the list archives at: 
>>>>> http://markmail.org/search/?q=Paraview-developers
>>>>> 
>>>>> Follow this link to subscribe/unsubscribe:
>>>>> http://public.kitware.com/mailman/listinfo/paraview-developers
>>>>>  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview-developers/attachments/20161111/c37bb496/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 7F53DEC77F67D0E0.asc
Type: application/pgp-keys
Size: 3082 bytes
Desc: OpenPGP public keys
URL: <http://public.kitware.com/pipermail/paraview-developers/attachments/20161111/c37bb496/attachment.key>


More information about the Paraview-developers mailing list