标签: crt

217
推荐指数
2
解决办法
54万
查看次数

打开Microsoft Office文件时缺少api-ms-win-crt-runtime-l1-1-0.dll

我正面临着这个.dll库缺失错误:

此程序无法启动,因为缺少api-ms-win-crt-runtime-l1-1-0.dll.尝试重新安装.

当我尝试打开Microsoft Office文件时.

我该如何解决?

crt

153
推荐指数
2
解决办法
108万
查看次数

我应该用/ MD或/ MT编译吗?

在Visual Studio中,有编译标志/ MD和/ MT,可让您选择所需的C运行时库类型.

我理解实现方面的差异,但我仍然不确定使用哪一个.有哪些优点/缺点?

我听说过/ MD的一个优点是,这允许有人更新运行时(比如修补安全问题),我的应用程序将从此更新中受益.虽然对我而言,这几乎看起来像一个非特征:我不希望人们改变我的运行时而不允许我测试新版本!

我很好奇的一些事情:

  • 这会如何影响构建时间?(据推测/ MT有点慢?)
  • 其他含义是什么?
  • 大多数人使用哪一个?

c++ msbuild crt msvcrt visual-studio

117
推荐指数
6
解决办法
8万
查看次数

crt0.o和crt1.o - 有什么区别?

最近我一直在尝试调试一些低级工作,我找不到crt0.S编译器(avr-gcc),但我确实找到了crt1.S(和相应的.o文件一样).

这两个文件有什么区别?是crt1完全不同的东西还是什么?它们似乎都与'bootstrapping'(设置stack frame等)有关,但为什么区别呢?

c linker gcc crt avr-gcc

34
推荐指数
1
解决办法
1万
查看次数

msvcrt、ucrt 和 vcruntime 库之间的差异

有人可以解释一下它们之间的区别吗?互联网查询让我很困惑。

我用的是VS2019。

crt msvcrt

29
推荐指数
1
解决办法
3万
查看次数

如何从fopen FILE结构中获取文件HANDLE?

fopen函数返回一个指向FILE结构的指针,该结构应被视为不透明值,而不处理其内容或含义.

在Windows上,C运行时是Windows API的包装器,该fopen函数依赖于该CreateFile函数.该CreateFile函数返回a HANDLE,由其他Windows API使用.

现在,我需要使用使用库的Windows API的内心深处fopenFILE*.那么:有没有办法HANDLEFILE结构中获得?由于这是特定于编译器的,我的意思是在MSVC运行时库上.

据我所知,这将是一个丑陋的,不可移植的黑客,如果微软改变内部格式,可能会破坏FILE......但我正在开发一个封闭的系统(即在Windows CE嵌入式系统上)并重构库将是困难和耗时的.

c winapi crt msvcrt windows-ce

27
推荐指数
3
解决办法
2万
查看次数

C++静态链接共享库

我有一个共享库,由我无法控制的另一个应用程序使用,需要*.so对象.我的库使用sqlite3,它需要与它静态链接(我绝对需要一个自包含的二进制文件).

当我尝试编译和链接我的库时:

-fpic -flto -pthread -m64
-flto -static -shared
Run Code Online (Sandbox Code Playgroud)

我最终得到以下错误:

/usr/bin/ld: /usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.6.1/crtbeginT.o: relocation R_X86_64_32 against `__DTOR_END__' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.6.1/crtbeginT.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

什么是与-fPIC相关的重新编译?我的代码还是CRT?

我已经尝试用-fPIC编译我的对象,结果相同.

谢谢.

编辑:

这个问题似乎与SQLite3无关.

我写了一个简单的单行无用库,它编译和链接如下:

g++ -c -fPIC -o bar.o bar.cpp
g++ -shared -o bar.so bar.o
Run Code Online (Sandbox Code Playgroud)

但不是这样的:

g++ -c -fPIC -o bar.o bar.cpp
g++ -static -shared -o bar.so bar.o
Run Code Online (Sandbox Code Playgroud)

问题似乎与CRT(crtbeginT.o)有关.我应该重新编译GCC - 用pic还是其他什么?

c++ crt static-libraries dynamic-library

26
推荐指数
2
解决办法
3万
查看次数

Windows malloc替换(例如,tcmalloc)和动态crt链接

使用多个DLL和QT的C++程序应该配备malloc替换(如tcmalloc),以解决可以验证由Windows malloc引起的性能问题.使用linux,没有问题,但是对于Windows,有几种方法,我发现它们都没有吸引力:

1.将新的malloc放入lib并确保首先链接它(其他SO问题)

这样做的缺点是,例如strdup仍将使用旧的malloc,而free可能会使程序崩溃.

2.使用lib.exe(Chrome)从静态libcrt库中删除malloc

铬/铬进行测试/使用(?),但缺点是它只能与静态连接crt一起使用.如果一个系统库与msvcrt动态链接,则静态链接存在问题,堆分配/释放中可能存在不匹配.如果我理解正确,tcmalloc可以动态链接,以便所有自编译的dll都有一个公共堆(这很好).

3.补丁crt源代码(firefox)

Firefox的jemalloc显然修补了Windows CRT源代码并构建了一个新的crt.这又有上面的静态/动态链接问题.

人们可以考虑使用它来生成动态MSVCRT,但我认为这是不可能的,因为许可证禁止提供具有相同名称的修补MSVCRT.

4.在运行时动态修补加载的CRT

一些商业内存分配器可以做这样的魔术.tcmalloc也可以,但这看起来相当丑陋.它有一些问题,但它们已被修复.目前,使用tcmalloc它不能在64位窗口下工作.

有更好的方法吗?任何意见?

windows malloc dll crt msvcrt

23
推荐指数
3
解决办法
1万
查看次数

fopen_s如何比fopen更安全?

我正在研究用于Windows平台的遗留代码.当我编译代码时VS2013,它会发出以下警告:

错误C4996:' fopen':此函数或变量可能不安全.考虑fopen_s改用.要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS.详情请参见在线帮助."

它也会给出一个熟悉的警告sprintf.sprintf_s由于缓冲区溢出,我理解比sprintf更安全.

但是如何使fopen_s更安全fopen,因为fopen不接受缓冲区就没有缓冲区溢出的可能性.任何人都可以提供一个fopen不安全的案件,fopen_s是否安全?

c++ windows crt msvcrt tr24731

22
推荐指数
1
解决办法
1万
查看次数

JAVA:如何获取认证(crt)文件的密钥库文件

大家好,

我有一个.crt文件,我需要获取相关的密钥库文件.怎么办?

keytool有帮助的呢?

谢谢.

java keystore crt keytool

19
推荐指数
1
解决办法
3万
查看次数