Я рекомендую вам загрузить и установить последнюю версию MinGW-w64 не только потому, что он является передовым, но он также содержит библиотеку импорта libmsvcr110.a
для связывания. Тогда попробуйте следующее:
specs.msvcr110
%rename cpp msvcrXX_cpp
%rename cc1plus msvcrXX_cc1plus
*cpp:
%(msvcrXX_cpp) -D__MSVCRT_VERSION__=0x1100 -D__USE_MINGW_ACCESS
*cc1plus:
%(msvcrXX_cc1plus) -D__MSVCRT_VERSION__=0x1100 -D__USE_MINGW_ACCESS
*libgcc:
%{mthreads:-lmingwthrd} -lmingw32 %{shared-libgcc:-lgcc_s} -lgcc -lmoldname110 -lmingwex -lmsvcr110
libmoldname110.a
Как некоторые из вас справедливо заметили, действительно не существует libmoldname110.a
, поставляемого "из коробки" (и для этого есть веские причины). Тем не менее, как обычно, никто не мешает вам построить его самостоятельно. Для этого вам сначала нужно получить _ 6_, а затем используйте (сладкое) dlltool
следующим образом:
$ dlltool -k -U --as=as --def=moldname-msvcrt.def --dllname=msvcr110.dll --output-lib=libmoldname110.a
ПРИМЕЧАНИЕ.
К сожалению, на данный момент у меня нет возможности проверить это на собственном опыте. Поэтому, пожалуйста, поделитесь своим опытом в комментариях, чтобы мы вместе могли прийти к окончательному решению.
test.rc
#include <winuser.h>
// Choose:
1 RT_MANIFEST msvcr110.manifest // if linking executable
2 RT_MANIFEST msvcr110.manifest // if linking DLL
msvcr110.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC110.CRT" version="11.0.51106.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
<file name="msvcr110.dll" />
<file name="msvcp110.dll" />
<file name="msvcm110.dll" />
</assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
См. манифесты приложений для получения дополнительной информации.
Строить
$ windres -i test.rc -o test.rc.o --output-format=coff
$ gcc -specs=specs.msvcr110 -o test test.c test.rc.o
Рекомендация
Хотя Microsoft Visual C Runtime входит в состав большинства платформ, существует множество его версий, некоторые из которых содержат ошибки и / или нарушают обратную совместимость strong >. Таким образом, всегда рекомендуется распространять версию msvcr*.dll
, которая, как вы знаете, работает с вашим приложением.
person
Alexander Shukaev
schedule
07.04.2013