Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29279 Discussions

unresolved external symbol _for__issue_diagnostic error

corero
Beginner
1,227 Views
We moved from CVF to IVF and the static library finally build ok with /iface:cvf option and /DNOSPLIT

The final product (C++/CLI/MFC based application)report this issue, after we linked against: ifconsol.lib, libifcoremdd.lib, libmmdd.lib, libirc.lib, svml_disp.lib, ifwin.lib, libifportmd.lib (for debug version)

Error2error LNK2019: unresolved external symbol _for__issue_diagnostic referenced in function __f_settextpositionifconsol.lib

The static libraries sources do not make any calls to settextposition function.

Release version also report the same issue with the multithread DLL libraries.

If I create new project with C++ (SDI type) and link against the same libraries and do the same initializations, this error do not appear. I only included code for initializations in the test project.

Do you have any clue how to avoid this error on the main product?
What could be the cause?
0 Kudos
1 Solution
Steven_L_Intel1
Employee
1,227 Views
Ok, that explains it. MESSAGEBOXQQ is a QuickWin routine and a restriction of QuickWin is that it requires static linking. You cannot link code that calls QuickWin using DLL libraries. The symbol you are missing is found only in the static library libifcore.lib.

If MESSAGEBOXQQ is the only QuickWin routine being used (FULLPATHQQ is not QuickWin), you could replace it with a call to the Win32 API routine MessageBox. If you can post the source of the routine that calls MESSAGEBOXQQ we can suggest how to rewrite it.

View solution in original post

0 Kudos
4 Replies
Steven_L_Intel1
Employee
1,227 Views
Does your static library contain QuickWin calls?
0 Kudos
corero
Beginner
1,227 Views
yes, it contains QuickWin calls.


I am not fortran programmer, but I found three files containg "use dflib", for what I understand is what you are asking.
I think I found two calls related to this subject in our static library sources: messageboxqq and fullpathqq
0 Kudos
Steven_L_Intel1
Employee
1,228 Views
Ok, that explains it. MESSAGEBOXQQ is a QuickWin routine and a restriction of QuickWin is that it requires static linking. You cannot link code that calls QuickWin using DLL libraries. The symbol you are missing is found only in the static library libifcore.lib.

If MESSAGEBOXQQ is the only QuickWin routine being used (FULLPATHQQ is not QuickWin), you could replace it with a call to the Win32 API routine MessageBox. If you can post the source of the routine that calls MESSAGEBOXQQ we can suggest how to rewrite it.
0 Kudos
corero
Beginner
1,227 Views
I changed MESSAGEBOXQQ call to MESSAGEBOX, similar to the change in this thread http://software.intel.com/en-us/forums/showthread.php?t=65055

Now, I am able to build successfully for both debug and release versions.
Thank you for your help.
0 Kudos
Reply