Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22122

Location of scanf function family in VC runtime 2017 to be used in MinGW 7

$
0
0

I am using:

  • VS 2017
  • MinGW with GCC/G++ 7.4.0.

Basically what is happening goes as follows:

  1. An executable is built using VS 2017
  2. An .so is built with GCC
  3. The .so is loaded by the executable created in step 1

The issue stems from the MSVCRT. MinGW by default links against MSVCRT.DLL and the executable created using VS 2017 uses VCRUNTIME140.DLL and UCRTBASE.DLL.

When the .so is loaded two CRT exist the one from MSVCRT.DLL and the other from VCRUNTIME140.DLL and UCRTBASE.DLL. This causes random issues/memory issues during application runtime.

The solution for that is to have MinGW link against VCRUNTIME140.DLL instead of MSVCRT.DLL. I have done that by creating an import library from VCRUNTIME140.DLL added it to MinGW and dumped the GCC specs and modified it to have it link to the VCRUNTIME140.DLL and UCRTBASE.DLL.

My problem now is the scanf family functions. I can't seem to find the scanf functions within VCRUNTIME140.DLL or UCRTBASE.DLL.

Where does the scanf family lie now in the whole new UCRT thing?

So, I just compiled a small test application which makes use of scanf and compiled it using VS 2017 and found that it uses API-MS-WIN-CRT-STDIO-L1-1-0.DLL which then uses UCRTBASE.DLL for scanf which appears this way __stdio_common_vscanf.

I am now so confused. Is there any kind of a clean way to reference scanf functions by MinGW GCC?


Viewing all articles
Browse latest Browse all 22122

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>