操作文件时如何避免msvcr100.dll依赖?

时间:2014-12-11 08:14:53

标签: c visual-studio-2010

我正在C中编写一个自定义安装程序启动器,用于打开,读取和写入文件。我使用fopen()打开文件。这在Linux上完美运行,二进制文件不依赖于libstdc ++。所以在Visual Studio 2010中的Windows上,我得到了对MSVCR100.DLL的依赖。如果我添加/NODEFAULTLIB标志,则链接器将失败。

我需要这个程序没有MSVCR100.DLL依赖,因为它启动了一个安装程序,稍后会安装VC ++ 2010 Redistributable,并且在启动时它不确定主机是否有这个库。

如何在不使用MSVCR100.DLL的情况下操作VS中的文件?

2 个答案:

答案 0 :(得分:2)

您获得了对msvcr100.dll(可能还有msvcp100.dll)的依赖,因为您的项目设置定义了这一点。您应该使用静态链接而不是动态链接运行时库。

更改您的C/C++ code generation settings:运行时库。选择不带DLL的选项。

答案 1 :(得分:1)

或者,如果您可以稍微更改一下代码,可以使用Win32 API(CreateFile,ReadFile ...)。这将链接到kernel32.dll,它始终可用。