Fri 12 Nov 2010 08:00:01 AM UTC, comment #15:
Oldish bug.
Should have been fixed a long time ago.
|
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.
|
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?
|
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
|
Wed 26 Sep 2007 01:55:47 PM UTC, comment #11:
Fixed.
Sorry about that.
|
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.
|
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?
|
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.
|
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...
|
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"
|
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?
|
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.
|
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.
|
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.
|
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.
|
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.
|