Error LNK 2019 when building Opensees V 2.4.5

For developers writing C++, Fortran, Java, code who have questions or comments to make.

Moderators: silvia, selimgunay, Moderators

Post Reply
hobbylofty
Posts: 13
Joined: Tue Jul 03, 2012 8:54 am
Location: Roma Tre University

Error LNK 2019 when building Opensees V 2.4.5

Post by hobbylofty »

Basic description:
OS: win7
SDK: vs 2012
ActiveTcl: 8.5.16.0 (32bit)
tortoiseSVN (repository url) svn://opensees.berkeley.edu/usr/local/svn/OpenSees

1. empty the file Win32, then update to revision: rev 5855, update depth: working copy (make depth sticky: checked)
2. open the solution "OpenSees.sln" in vs 2012
3. all the 27 projects are invalid, then delete and add all the 27 projects by "*.vcproj" to update the project to "*.vcxproj" in vs2012
4. build the 27 project one by one, add the lost lib, include files and some lost source files to the projects to solve most of the errors.
5. Finally, only one type of LNK2019 error could not be solved when build the OpenSees, OpenSeesTK, quickmain

Problem:
libifcore.lib(for_init.obj) : error LNK2019: unresolved external symbol __pxcptinfoptrs referenced in function _GETEXCEPTIONPTRSQQ

The libifcore.lib is loaded via the SVN software.

What I could do to solve the aforementioned problem?

output log:

1>------ Build started: Project: damage, Configuration: Debug Win32 ------
1>Build started 1/29/2015 12:45:57 PM.
1>InitializeBuildStatus:
1> Creating ".\..\..\obj\damage\debug\damage.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1> All outputs are up-to-date.
1>Lib:
1> All outputs are up-to-date.
1> damage.vcxproj -> D:\Research business\Programms\OpenSees\Win32\proj\damage\.\..\..\lib\debug\damage.lib
1>FinalizeBuildStatus:
1> Deleting file ".\..\..\obj\damage\debug\damage.unsuccessfulbuild".
1> Touching ".\..\..\obj\damage\debug\damage.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:00.60
2>------ Build started: Project: openSees, Configuration: Debug Win32 ------
2>Build started 1/29/2015 12:46:00 PM.
2>InitializeBuildStatus:
2> Touching ".\..\..\obj\openSees\debug\openSees.unsuccessfulbuild".
2>ClCompile:
2> All outputs are up-to-date.
3>------ Build started: Project: openSeesTk, Configuration: Debug Win32 ------
4>------ Build started: Project: optimization, Configuration: Debug Win32 ------
5>------ Build started: Project: quickMain, Configuration: Debug Win32 ------
2>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/FORCE' specification
2>tclAppInit.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification
3>Build started 1/29/2015 12:46:02 PM.
4>Build started 1/29/2015 12:46:02 PM.
5>Build started 1/29/2015 12:46:02 PM.
4>InitializeBuildStatus:
3>InitializeBuildStatus:
3> Touching ".\..\..\obj\openSeesTk\debug\openSeesTk.unsuccessfulbuild".
4> Creating "Debug\optimization.unsuccessfulbuild" because "AlwaysCreate" was specified.
5>InitializeBuildStatus:
5> Touching ".\..\..\obj\quickMain\debug\quickMain.unsuccessfulbuild".
4>ClCompile:
4> All outputs are up-to-date.
3>ClCompile:
3> All outputs are up-to-date.
5>ClCompile:
5> All outputs are up-to-date.
4>Lib:
4> All outputs are up-to-date.
4> optimization.vcxproj -> D:\Research business\Programms\OpenSees\Win32\proj\optimization\.\..\..\lib\debug\optimization.lib
4>FinalizeBuildStatus:
4> Deleting file "Debug\optimization.unsuccessfulbuild".
4> Touching "Debug\optimization.lastbuildstate".
4>
4>Build succeeded.
4>
4>Time Elapsed 00:00:00.66
3>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/FORCE' specification
3>tkMain.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification
5>libifcore.lib(for_init.obj) : error LNK2019: unresolved external symbol __pxcptinfoptrs referenced in function _GETEXCEPTIONPTRSQQ
5>.\..\..\bin/quickMain.exe : fatal error LNK1120: 1 unresolved externals
5>
5>Build FAILED.
5>
5>Time Elapsed 00:00:08.86
3> Creating library .\..\..\bin\openSeesTk.lib and object .\..\..\bin\openSeesTk.exp
2> Creating library .\..\..\bin\openSees.lib and object .\..\..\bin\openSees.exp
3>libifcore.lib(for_init.obj) : error LNK2019: unresolved external symbol __pxcptinfoptrs referenced in function _GETEXCEPTIONPTRSQQ
3>.\..\..\bin/openSeesTk.exe : fatal error LNK1120: 1 unresolved externals
2>libifcore.lib(for_init.obj) : error LNK2019: unresolved external symbol __pxcptinfoptrs referenced in function _GETEXCEPTIONPTRSQQ
2>.\..\..\bin/OpenSees.exe : fatal error LNK1120: 1 unresolved externals
3>
3>Build FAILED.
3>
3>Time Elapsed 00:00:20.99
2>
2>Build FAILED.
2>
2>Time Elapsed 00:00:22.42
========== Build: 2 succeeded, 3 failed, 22 up-to-date, 0 skipped ==========
Department of structures
Rome Tre University
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: Error LNK 2019 when building Opensees V 2.4.5

Post by fmk »

hobbylofty
Posts: 13
Joined: Tue Jul 03, 2012 8:54 am
Location: Roma Tre University

Re: Error LNK 2019 when building Opensees V 2.4.5

Post by hobbylofty »

Thanks Dr. Frank McKenna.
I saw this solutions two days ago, and then I tried but failed.
Today I tried this method once and succeed.
This error
libifcore.lib(for_init.obj) : error LNK2019: unresolved external symbol __pxcptinfoptrs referenced in function _GETEXCEPTIONPTRSQQ
is caused by the library file LIBIFCORE.lib and LIBIFCOREMT.lib.

symbol __pxcptinfoptrs referenced in function _GETEXCEPTIONPTRSQQ should exist in LIBIFCOREMT.lib rather than the LIBIFCORE.lib in my programming environment.

Now I summarize my solution once again as follows (based on update the source code via tortoiseSVN):
1. go to the directory: ...\OpenSees\Win32\lib, then you could find two files named as "LIBIFCORE.lib" and "LIBIFCOREMT.lib"
2. delete the file "LIBIFCORE.lib"
3. rename "LIBIFCOREMT.lib" as "LIBIFCORE.lib"
Succeed!
wish my experience could be helpful for you.
Department of structures
Rome Tre University
hobbylofty
Posts: 13
Joined: Tue Jul 03, 2012 8:54 am
Location: Roma Tre University

Re: Error LNK 2019 when building Opensees V 2.4.5

Post by hobbylofty »

I have a deeper understanding of the library files "LIBIFCORE.lib" and "LIBIFCOREMT.lib".
I guess they are the calculation module for OpenSees and are written in Fortran.
In fact they should be generated by the same codes (IVF, Intel Visual Fortran) with different project setting. "LIBIFCOREMT.lib" is the multithread library.

If the C++ project is set to use multithread libraries, then the Fortran project must also be set for that.
I checked the OpenSees project setting (propertes-->C/C++-->code generation-->Runtime Library) is Multi-threaded Debug (/MTd), thus the LIBIFCOREMT.lib should be called.
To learn more about the Runtime Library options in visual studio, see https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx.
Department of structures
Rome Tre University
Post Reply