question

Upvotes
Accepted
1 0 1 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 512.0 KiB each and 1.0 MiB total.

@Gordon Hunn

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?

If so please can you click the 'Accept' text next to the appropriate reply? This will guide all community members who have a similar question.

Thanks,

AHS

@Gordon Hunn

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?

If so please can you click the 'Accept' text next to the appropriate reply? This will guide all community members who have a similar question.

Thanks,

AHS

Gordon.Hunn avatar image   Gordon.Hunn veerapath.rungruengrayubkul

I will do that if the issue gets resolved.
Currently there is still no answer to the multiple definitions issue in the supplied librsslVACache.lib which appears to be a required library.

@Gordon Hunn,

The librsslVACache.lib is not a required lib. Unless you are using a Watchlist cache, can you provide us the reference where you believe it is required? Many of the examples included in the examples area do not require this lib. Also, can you also provide us the results of the build for the WatchList example suggested for you to try (see below)? If you go through the quick start for ETA and follow the instructions to build the examples, this should help you move forward.

Show more comments

Please be informed that a reply has been verified as correct in answering the question, and has been marked as such.

Thanks,

AHS

Upvotes
Accepted
17.3k 82 39 63

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 512.0 KiB each and 1.0 MiB total.

Upvotes
17.3k 82 39 63

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 512.0 KiB each and 1.0 MiB total.

Upvotes
1 0 1 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 512.0 KiB each and 1.0 MiB total.

Hi @Gordon Hunn,

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

Upvotes
17.3k 82 39 63

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 512.0 KiB each and 1.0 MiB total.

Upvotes
1 0 1 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 512.0 KiB each and 1.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.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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