[Paraview-developers] Linker error building Fortran90FullExample
thomasblome at startmail.com
thomasblome at startmail.com
Sat Nov 19 10:09:29 EST 2016
Hi Andy,
I ran ctest from the windows cmd, but couldn't make sense of the
output. Anyhow, I guess the segmentation fault was due to a wrong
declaration of the rank 3 Fortran array of type complex in the
procedure interface I provided for the C++ function addfield(). I
changed it to be type(c_ptr) as the function expects a double pointer.
Afterwards the test ran successfully.
Nevertheless, it remains a mystery to me how the reference to the rank
3 array is properly handled in addfield(), as Fortran and C++ use
different memory layouts for multidimensional arrays; I guess it's
still not correct, even though there is no segmentation fault shown.
I set the input of EnableLiveVisualization() in coproc.py to True and
tried to visualize the simulation, but its duration is too short - the
test finishes already after a few seconds. Only once I could sneak a
peak to the cube in Paraview, but I got following error message (in
Paraview) right before the simulation stopped:
ERROR: In
C:\Kitware\ParaView-v5.1.2\VTK\Parallel\Core\vtkSocketCommunicator.cxx,
line 809
vtkSocketCommunicator (000001E68C21B360): Could not receive tag. 1
Best,
Thomas
Am Sonntag, 13. November 2016 14:40 schrieb Andy Bauer
<andy.bauer at kitware.com>:
> Hi Thomas,
>
> Can you run ctest -V to get verbose output out of the run? That may
> shed some light on what the issue is. My guess is that it's not
> finding the coproc.py script. Also, the verbose output for ctest will
> show you how you can run the test manually which may be useful.
>
> Cheers,
> Andy
>
> On Fri, Nov 11, 2016 at 2:50 PM, <thomasblome at startmail.com> wrote:
>> 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/20161119/ad019732/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/20161119/ad019732/attachment.key>
More information about the Paraview-developers
mailing list