bugCERTI - Bugs: bug #21124, Fedtime Library problem

 
 

bug #21124: Fedtime Library problem

Submitted by:  None
Submitted on:  Wed 19 Sep 2007 02:45:59 PM UTC  
 
Category: CERTISeverity: 3 - Normal
Item Group: Compilation errorStatus: In Progress
Privacy: PublicAssigned to: Eric NOULARD <erk>
Open/Closed: ClosedRelease: 3.2.4
Reproducibility: Every TimeFixed Release: NextRelease

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

(Jump to the original submission Jump to the original submission)

Fri 12 Nov 2010 08:00:01 AM UTC, comment #15:

Oldish bug.
Should have been fixed a long time ago.

Eric NOULARD <erk>
Project AdministratorIn charge of this item.
Fri 28 Sep 2007 09:13:59 PM UTC, comment #14:

I think I found the source of our trouble.
The name mangling scheme
and/or the calling convention (stdcall vs cdecl)
of mingw and cl (C/C++ compiler of MS Visual Studio) differs.

I will try to find the good way to go after
some reading:

http://wyw.dcweb.cn/stdcall.htm

http://www.mingw.org/docs.shtml#compilingandbuilding

http://sourceware.org/binutils/docs-2.18/ld/WIN32.html#WIN32

http://www.mingw.org/MinGWiki/index.php/sample%20DLL

In the meantime the better would be to recompile
CERTI with the same (Visual Studio) compiler you
use for the application.

See task #6891, Port CERTI on Windows
https://savannah.nongnu.org/task/?6891
for more details.

I may write a CERTI Compilation Howto sooner or later.

Eric NOULARD <erk>
Project AdministratorIn charge of this item.
Thu 27 Sep 2007 06:55:58 AM UTC, comment #13:

Ok noted.
I'm really sticked with this since
I cannot reproduce the error you have myself.

I can see 2 way to go:

0) Try to rebuild the .lib file using the .def file
using YOUR visual studio version
I do not have the same version as you have.
Procedure is easy:
Open a Visual Studio shell (from start menu)
then go to <CERTI_INSTALL>/lib
then
lib /machine:i386 /def:libCERTI.def
lib /machine:i386 /def:libRTI.def

1) You may try to compile CERTI using Visual Studio
and see if you have the same link trouble.

2) You may give me the test application source
code I will try to compile myself.
By the way can you confirm that the very same
test application is built on unix platform with no
trouble?

I have one more question.
I see you have "C:\cygwin\lib" in your lib path
is Genesis compiled using Cygwin ?
Why do you need Cygwin lib on the lib path?

Eric NOULARD <erk>
Project AdministratorIn charge of this item.
Wed 26 Sep 2007 03:23:32 PM UTC, comment #12:

Same Link Error with .lib :

/DotNetDir/Vc7/bin/../../VC7/BIN/link.exe /libpath:"/DotNetDir/Vc7/bin/../Lib" /nologo /incremental:yes /machine:I386 /libpath:CompiledFiles/LibCERTI32WINDotNet /incremental:no /fixed:no /libpath:"CompiledFiles\LibCERTI32WINDotNet" /libpath:"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib" /libpath:"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib" /subsystem:CONSOLE /libpath:"C:\cygwin\lib" /libpath:"c:\Program Files\certi 3.2.5pre6\lib" /libpath:"d:\Genesis1516\GenesisLib\LibCERTI32DotNet" libRTI.lib libCERTI.lib /DEBUG "CompiledFiles\OCERTI32WINDotNet\TestGenericMainTypes.dto" libTestGeneric_BasicTypesLibDebug.lib libTestGeneric_NotBasicTypesLibDebug.lib libTestGeneric_BaseTypeLibDebug.lib libTestGeneric_UserBasicTypesLibAloneDebug.lib libGenerationVRTIAloneDebug.lib libVirtualRTIDebug.lib libRTI.lib libCERTI.lib /out:CompiledFiles/BinCERTI32WINDotNet/TestGenericTestGenTypesDebug.exe /DEBUG /pdb:"CompiledFiles\BinCERTI32WINDotNet\TestGenericTestGenTypesDebug.pdb"
TestGenericMainTypes.dto : error LNK2019: unresolved external symbol "__declspec(dllimport) class std::basic_ostream<char,struct std::char_traits<char> > & _cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class RTI::FedTime const &)" (__imp??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVFedTime@RTI@@@Z) referenced in function "void __cdecl MyDeltaTimeTestEOS(void)" (?MyDeltaTimeTestEOS@@YAXXZ)
TestGenericMainTypes.dto : error LNK2019: unresolved external symbol "__declspec(dllimport) public: _thiscall RTIfedTime::RTIfedTime(class RTIfedTime const &)" (__imp??0RTIfedTime@@QAE@ABV0@@Z) referenced in function "void __cdecl MyDeltaTimeTestEOS(void)" (?MyDeltaTimeTestEOS@@YAXXZ)
TestGenericMainTypes.dto : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual _thiscall RTIfedTime::~RTIfedTime(void)" (__imp??1RTIfedTime@@UAE@XZ) referenced in function "void __cdecl MyDeltaTimeTestEOS(void)" (?MyDeltaTimeTestEOS@@YAXXZ)
TestGenericMainTypes.dto : error LNK2019: unresolved external symbol "__declspec(dllimport) public: _thiscall RTIfedTime::RTIfedTime(double const &)" (__imp??0RTIfedTime@@QAE@ABN@Z) referenced in function "void __cdecl MyDeltaTimeTestEOS(void)" (?MyDeltaTimeTestEOS@@YAXXZ)
CompiledFiles/BinCERTI32WINDotNet/TestGenericTestGenTypesDebug.exe : fatal error LNK1120: 4 unresolved externals

Arnaud Berger <berger>
Wed 26 Sep 2007 01:55:47 PM UTC, comment #11:

Fixed.
Sorry about that.

Eric NOULARD <erk>
Project AdministratorIn charge of this item.
Wed 26 Sep 2007 01:54:04 PM UTC, comment #10:

For http://download.savannah.gnu.org/releases/certi/beta/certi-3.2.5pre6-Windows-MinGW.exe

--> Access problem like last time
You don't have permission to access /releases/certi/beta/certi-3.2.5pre6-Windows-MinGW.exe on this server.

Arnaud Berger <berger>
Wed 26 Sep 2007 01:43:30 PM UTC, comment #9:

OK.

I've just uploaded a new CERTI beta release
http://download.savannah.gnu.org/releases/certi/beta/certi-3.2.5pre6-Windows-MinGW.exe
You should install this one:
in <INSTALL_DIR>/lib/
you will now have libCERTI.def and libRTI.def files.

With an added zip file:
http://download.savannah.gnu.org/releases/certi/beta/certi-3.2.5pre6-Windows-libForMSVC.zip
which contains libCERTI.lib and libRTI.lib files
(libgraph should'nt be useful for now you may even remove it
from your dependency since it is only used by billard.exe)
I have built the .lib files using Microsoft LIB tools,
like explained in the preceding link:

lib /machine:i386 /def:lib[CE]RTI.def

After installing CERTI,
You should put those lib files in
<INSTALL_DIR>/lib/

then you should use the lib files in order to link your
MSVC project.

Could you try this?

Eric NOULARD <erk>
Project AdministratorIn charge of this item.
Wed 26 Sep 2007 12:54:52 PM UTC, comment #8:

There may be another issue due to the fact
I've used MinGW to generate the .dll

It seems, I need to build a .lib file for MSVC:
http://www.mingw.org/mingwfaq.shtml#faq-msvcdll.

I'm currently trying to do it.

Eric NOULARD <erk>
Project AdministratorIn charge of this item.
Wed 26 Sep 2007 11:39:25 AM UTC, comment #7:

Arf sorry I think there is a problem in the generated command with Genesis I just have seen it when i've done the past with ".dll.a"

It must be this the pb...

Arnaud Berger <berger>
Wed 26 Sep 2007 11:36:45 AM UTC, comment #6:

Yes, I link with the 3 libs :
libgraph.a libRTI.dll.a libCERTI.dll.a

The command line is big because auto generated by Genesis:

/DotNetDir/Vc7/bin/../../VC7/BIN/link.exe /libpath:"/DotNetDir/Vc7/bin/../Lib" /nologo /incremental:yes /machine:I386 /libpath:CompiledFiles/LibCERTI32WINDotNet /incremental:no /fixed:no /libpath:"CompiledFiles\LibCERTI32WINDotNet" /libpath:"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib" /libpath:"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib" /subsystem:CONSOLE /libpath:"C:\cygwin\lib" /libpath:"C:\Program Files\certi 3.2.5pre5\lib" /libpath:"d:\Genesis1516\GenesisLib\LibCERTI32DotNet" libgraph.a libRTI.dll.a libCERTI.dll.a /DEBUG "CompiledFiles\OCERTI32WINDotNet\TestGenericMainTypes.dto" libTestGeneric_BasicTypesLibDebug.lib libTestGeneric_NotBasicTypesLibDebug.lib libTestGeneric_BaseTypeLibDebug.lib libTestGeneric_UserBasicTypesLibAloneDebug.lib libGenerationVRTIAloneDebug.lib libVirtualRTIDebug.lib /out:CompiledFiles/BinCERTI32WINDotNet/TestGenericTestGenTypesDebug.exe /DEBUG /pdb:"CompiledFiles\BinCERTI32WINDotNet\TestGenericTestGenTypesDebug.pdb"

Arnaud Berger <berger>
Wed 26 Sep 2007 10:41:35 AM UTC, comment #5:

A stupid question but do you link both with

libRTI.dll
AND
libCERTI.dll

You need both to link properly.
Could you copy/paste the full link command used?

Eric NOULARD <erk>
Project AdministratorIn charge of this item.
Wed 26 Sep 2007 08:51:52 AM UTC, comment #4:

The message is exactly the same with the new version. I have clean all and recompile but it still doesn't work.

Arnaud Berger <berger>
Tue 25 Sep 2007 01:49:05 PM UTC, comment #3:

Arnaud,

Could you please retry with the freshly uploaded
http://download.savannah.gnu.org/releases/certi/beta/certi-3.2.5pre5-Windows-MinGW.exe

It "may" fix your linkage trouble.

It has the same name as the previous one
but this one is different
please uninstall the preceding one before
installing that one.

Eric NOULARD <erk>
Project AdministratorIn charge of this item.
Tue 25 Sep 2007 12:28:11 PM UTC, comment #2:

I think I did found the root of the trouble.
Some function belonging to RTI:: namespace
are currently implemented in libCERTI
(and not in libRTI), this
is not a problem under Unix since all symbols
are automatically exported from a library.

On Windows if a symbol of a library is to be used
by an external program or library it should be
flagged as "exported" using dllexport directive
from within the concerned lib and using dllimport
from the external prog/lib.

In the CERTI source code we use CERTI_EXPORT
macros for the libCERTI and RTI_EXPORT for the libRTI.

The "missing" symbols belongs to libRTI but are implemented
in libCERTI which does export them.

I will fix this by putting RTI:: symbols in libRTI
and certi:: symbols in libCERTI with some added
function wrapper RTI:: calling the corresponding certi::
API.

Should be ok by the end of the Week.

Eric NOULARD <erk>
Project AdministratorIn charge of this item.
Wed 19 Sep 2007 06:17:28 PM UTC, comment #1:

Hi,

I think there is some missing CERTI_EXPORT
directive in CERTI/include/RTItypes.hh

in the first place in front of FedTime
may be others like ParameterHandleValuePairSet or Region.

I have no Win32 box at hand.
I'll CC jmm and rousse may be they can try to rebuild
CERTI with added appropriate CERTI_EXPORT.

Or, may be you may try to compile CERTI yourself?
Do you want to try?
I may help you to do it.

PS: You should open an account on Savannah
and login before reporting a bug this way
you would not appear as "anonymous" and
you'll automatically get the follow-up by mail.

Eric NOULARD <erk>
Project AdministratorIn charge of this item.
Wed 19 Sep 2007 02:45:59 PM UTC, original submission:

I don't know exatly if the problem come from the CERTI or from my configuration.

I'm actually using certi-3.2.5pre4. I have use the certi-3.2.5pre4-Windows-Win32DevC++.exe installer. (beta)

I work on Visual .Net 2003

I have no problem to run CERTI but when compiling federate with Certi libs I have link errors :

TestGenericMainTypes.dto : error LNK2019: unresolved external symbol "__declspec(dllimport) class std::basic_ostream<char,struct std::char_traits<char> > & _cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class RTI::FedTime const &)" (__imp??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVFedTime@RTI@@@Z) referenced in function "void __cdecl MyDeltaTimeTestEOS(void)" (?MyDeltaTimeTestEOS@@YAXXZ)
TestGenericMainTypes.dto : error LNK2019: unresolved external symbol "__declspec(dllimport) public: _thiscall RTIfedTime::RTIfedTime(class RTIfedTime const &)" (__imp??0RTIfedTime@@QAE@ABV0@@Z) referenced in function "void __cdecl MyDeltaTimeTestEOS(void)" (?MyDeltaTimeTestEOS@@YAXXZ)
TestGenericMainTypes.dto : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual _thiscall RTIfedTime::~RTIfedTime(void)" (__imp??1RTIfedTime@@UAE@XZ) referenced in function "void __cdecl MyDeltaTimeTestEOS(void)" (?MyDeltaTimeTestEOS@@YAXXZ)
TestGenericMainTypes.dto : error LNK2019: unresolved external symbol "__declspec(dllimport) public: _thiscall RTIfedTime::RTIfedTime(double const &)" (__imp??0RTIfedTime@@QAE@ABN@Z) referenced in function "void __cdecl MyDeltaTimeTestEOS(void)" (?MyDeltaTimeTestEOS@@YAXXZ)

It looks like it's a problem with FedTime. libcerti.dll.a is included but these error are defined as "external" in the library.

Anonymous

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by berger (Posted a comment)
  • -unavailable- added by erk (as initial problem reporter)
  • -unavailable- added by erk (as initial problem reporter)
  • -unavailable- added by erk (For an possible Win32 compile.)
  • -unavailable- added by erk (Posted a comment)
  • -unavailable- added by erk (For an possible Win32 compile.)
  •  

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 10 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Fri 12 Nov 2010 08:00:01 AM UTCerkOpen/ClosedOpen=>Closed
    Tue 25 Sep 2007 01:49:19 PM UTCerkStatusNone=>In Progress
    Tue 25 Sep 2007 12:31:50 PM UTCerkCarbon-Copy-=>Added patricecarle
    Tue 25 Sep 2007 12:28:42 PM UTCerkCarbon-CopyRemoved carle=>-
    Tue 25 Sep 2007 12:28:11 PM UTCerkAssigned toNone=>erk
      ReleaseUnknown=>3.2.4
      Carbon-Copy-=>Added carle
      Carbon-Copy-=>Added -unavailable-
    Wed 19 Sep 2007 06:17:28 PM UTCerkCarbon-Copy-=>Added jmm
      Carbon-Copy-=>Added rousse

    Back to the top


    Powered by Savane 3.1-cleanup1