question

Upvotes
Accepted
1 0 0 0

Elektron-SDK-1.4.0 Window compile and link issues

I'm migrating from ETA 3.1.0L1 to 3.4.0L1 (Elektron-SDK-1.4.0L1).

The Linux upgrade went fairly smoothly - some includes and libraries have moved around, however it builds and passes it's test suite.

On Windows (VC11) not so much.

We are getting persistent multiply & undefined symbols at link time.

1>librsslVACache.lib(d_main.obj) : error LNK2005: _ansi_pch already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: _ansi_param already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: _ansi_spesc already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: _ansi_chparm already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_decode already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_end_of_row already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_page_columns already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_page_rows already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_scroll_bot already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_set_columns already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_set_end_of_row already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_set_rows already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_set_scroll_bot already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: null_char already defined in librsslVACache.lib(d_main.obj)
1>librsslVACache.lib(d_main.obj) : error LNK2005: _ansi_do_decode already defined in librsslVACache.lib(d_main.obj)
1>     Creating library C:\src\Agora\trunk\outwell\VC11\x64\binr\libs\agora_lib_UPA.x64.lib and object C:\src\Agora\trunk\outwell\VC11\x64\binr\libs\agora_lib_UPA.x64.exp
1>librssl.lib(ripcsslutils.obj) : error LNK2019: unresolved external symbol __imp_CertCloseStore referenced in function ripcSSLSetupCTXClient
1>librssl.lib(ripcsslutils.obj) : error LNK2019: unresolved external symbol __imp_CertEnumCertificatesInStore referenced in function ripcSSLSetupCTXClient
1>librssl.lib(ripcsslutils.obj) : error LNK2019: unresolved external symbol __imp_CertFreeCertificateContext referenced in function ripcSSLSetupCTXClient
1>librssl.lib(ripcsslutils.obj) : error LNK2019: unresolved external symbol __imp_CertOpenSystemStoreA referenced in function ripcSSLSetupCTXClient
1>C:\src\Agora\trunk\outwell\VC11\x64\binr\agora_lib_UPA.x64.dll : fatal error LNK1120: 4 unresolved externals

We include the following libraries

librsslVA.lib
librsslVACache.lib
libdacs.lib
libansi.lib
librssl.lib

Is there a problem with the Package or am I missing something?

elektronrefinitiv-realtimeelektron-sdkrrteta-apielektron-transport-api
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvotes
Accepted
9.7k 49 38 60

Hi @Gordon Hunn,

This appears to be a packaging issue with 1.4 but will need to confirm with development. I’ve submitted a question to verify and to provide a proper solution going forward.


Thanks.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvotes
9.7k 49 38 60

Hi @Gordon.Hunn,

Try adding the following libs to your link:

crypt32.lib
cryptui.lib
kernel32.lib
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvotes
1 0 0 0

crypt32.lib has fixed the _Cert* missing references. Thank you.


However I'm still left with the multiple definitions in librsslVACache.lib

1>librsslVACache.lib(d_main.obj) : error LNK2005: _ansi_pch already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: _ansi_param already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: _ansi_spesc already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: _ansi_chparm already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_decode already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_end_of_row already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_page_columns already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_page_rows already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_scroll_bot already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_set_columns already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_set_end_of_row already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_set_rows already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: qa_set_scroll_bot already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: null_char already defined in librsslVACache.lib(d_main.obj)

1>librsslVACache.lib(d_main.obj) : error LNK2005: _ansi_do_decode already defined in librsslVACache.lib(d_main.obj)

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Hi @Gordon Hunn,

Are you using cache features within the library? If not, you don't need to include it.

Upvotes
9.7k 49 38 60

Hi @Gordon Hunn,

I looked into one of the example projects (WatchlistConsumer) included within the downloads and here is the list of libs it uses:


1575038451786.png (93.4 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvotes
1 0 0 0

This might be a red herring - removed librsslVACache.lib and now I see

1>libansi.lib(d_main.obj) : error LNK2019: unresolved external symbol toascii referenced in function _ansi_pch

Any idea which lib supplies toascii() ?

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Hello @Gordon.Hunn,

Just a hunch.

In your ESDK13 build, do you observe folder:

esdk13\Elektron-SDK-BinaryPack\Cpp-C\Eta\Utils\Ansi ?

If you do not observe it in ESDK14 build?

Can you try copying it into

esdk14\Elektron-SDK-BinaryPack\Cpp-C\Eta\Utils

hope this helps

The libansi.lib in 1.4 came from

C:\src\Elektron-SDK-1.4.0.L1.win.rrg\Cpp-C\Eta\Libs\WIN_64_VS110 and was 144KB

I replaced it with the libansi from 1.2 (which is what I had to hand) - this was as you suggested in
C:\src\Elektron-SDK1.2.1.win.rrg\Elektron-SDK-BinaryPack\Cpp-C\Eta\Utils\Ansi\Libs\WIN_64_VS110

and is much bigger @ 517KB

This resolves the undefined reference - Good call :)

However, this means that the 1.4 package is incorrect. Please can you liase with Development to get this re-issued.

Hello @Gordon.Hunn

Good to hear. Yes. @nick.zincone.1 is already in the process of raising the question with development, so at some point we may expect an update.

@Gordon.Hunn,

Have you tried to build any of the example applications? I would try here first to ensure your environment is working and to provide you with the actual libs to include.

Click below to post an Idea Post Idea