[Paraview-developers] Linker error building Fortran90FullExample
thomasblome at startmail.com
thomasblome at startmail.com
Tue Dec 6 05:37:16 EST 2016
Hi Andy,
thank you for your help. I tried some other examples to conclude that
this last error occurs for all of them at the end of the simulation, so
it is just a general error message I guess.
I will upload the code changes on gitlab as soon as I can. I think I
will have uploaded them till the end of next week. I will inform you by
then.
Best,
Thomas
Am Dienstag, 29. November 2016 18:43 schrieb Andy Bauer
<andy.bauer at kitware.com>:
> Hi Thomas,
>
> Would you want to add a MR for your changes on gitlab?
>
> Yes, Fortran and C/C++ loop through memory in multidimensional arrays
> differently but in the end it's a flat memory layout so it can be
> managed.
>
> I'm not sure what the error you're seeing is from. If you add a bug
> report for that on gitlab I may be able to get to that as well.
>
> Thanks,
> Andy
>
> On Sat, Nov 19, 2016 at 10:09 AM, <thomasblome at startmail.com> wrote:
>> 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/20161206/25278c14/attachment-0001.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/20161206/25278c14/attachment-0001.key>
More information about the Paraview-developers
mailing list