标签: msvcrt

主要的荒谬值(int argc,char**argv)

我在旧的C++项目中启动了一个Console-application.
断点main(int argc, char** argv)开始program.exe -debug.
根据调试器argc变为32并且argv中的字符串具有奇怪的随机类值.
当执行继续发生访问冲突时,因为argv中的字符串指向无效值.

是什么导致这个?

windows msvcrt

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

我可以在不安装可分发的 VC++ 包的情况下将 MSVCRT DLL 与我的应用程序捆绑在一起吗

我有一个复杂的应用程序,无法与 CRT 静态链接,但另一方面不需要安装管理员权限(因为它没有执行任何需要它的操作)。安装 CRT 以便动态链接的正常方法是安装 MS 可分发 CRT,但它需要管理员权限。

我正在考虑简单地将 MSVCRT100 DLL 放在与可执行文件相同的目录中,以缓解该问题,但我不确定这种做法是否有任何缺点,因为在我看到的任何地方都没有宽恕或谴责这种做法。除了遵循静态链接与安装可分发文件的通常做法之外,还有什么理由不这样做?

c++ winapi msvcrt visual-studio-2010

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

CRT初始化和DLLMain

行情:

从文档"创建DLL的最佳实践" http://download.microsoft.com/download/a/f/7/af7777e5-7dcd-4800-8a0a-b18336565f5b/DLL_bestprac.doc的Microsoft:

"DLL通常具有复杂的相互依赖性,隐式定义它们必须加载的顺序.库加载器有效地分析这些依赖关系,计算正确的加载顺序,并按顺序加载DLL." [1]

"(在DLLMain中)使用动态C运行时(CRT)中的内存管理功能.如果未初始化CRT DLL,调用这些函数可能会导致进程崩溃." [2]

来自MSDN:http://msdn.microsoft.com/en-us/library/988ye33t.aspx

"_DllMainCRTStartup函数执行多项操作,包括调用_CRT_INIT,它初始化C/C++运行时库并在静态非局部变量上调用C++构造函数.如果没有此函数,运行时库将保持未初始化状态".[3]

"除了初始化C运行时库之外,_DllMainCRTStartup还调用了一个名为DllMain的函数." [4]

问题:

如果您的DLL依赖于CRT DLL,基于[1],将首先加载CRT DLL(首先进行初始化),那么[2]如何发生?

基于[3][4],_DllMainCRTStartup将调用_CRT_INIT来初始化CRT,那么[2]会如何发生?

如果一个可执行文件通过"隐式链接"加载你的DLL,你的DLL的_DllMainCRTStartup(和DLLMain)将在可执行文件的入口点(mainCRTStartup或WinMainCRTStartup)之前被调用,基于 [3] - _DllMainCRTStartup调用_CRT_INIT初始化CRT和mainCRTStartup也将初始化CRT,那么CRT究竟发生了什么?

如果你的DLL将在mainCRTStartup之前加载,那么在DLLMain或其他导出函数中调用CRT函数是否安全?

谁会实际初始化CRT DLL?

dll crt msvcrt

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

如何检查VC++生成的二进制exe的运行时库类型

用于对现有构建(二进制文件集、exe、dll、lib)进行故障排除。

有没有办法使用 SDK 或其他实用程序中的命令行工具来快速检查目标文件编译时所针对的运行时库类型?

例如,给定的 .dll 显然是针对动态运行时编译的(但如果它是调试或发布版本,则仍然不明显)。

而在 .exe 的情况下则更困难(确定是否使用动态/静态和调试/发布)。

(我的意思是,无需打开 VC++ 项目文件或查看 nmake / msbuild 文件中使用的编译器选项)。

msvcrt visual-c++

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

如何用 python 检测按键释放(而不是按键)?

如何使用 python 3 检测密钥释放?

就像我按下按键a1秒钟,当我将手指从按键上移开(释放按键)时,它就会print("Key 'a' pressed then released")

我尝试使用模块来完成此操作keyboard,但我不知道如何使用它。我曾经用它来检测按键。
msvcrt模块不适合我,但如果msvcrt可以做我想要的,那么你可以回答我。

笔记:

我不想使用Pygame或任何其他module会显示弹出窗口的

python msvcrt keyrelease python-3.x

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

Visual C++运行时库链接器问题

观察这个紧密的场景,即使它看起来与我以前的问题相同.我仍然没有得到答案.所以请不要作为重复报告.

我有一个有10个依赖项的项目.首先,我使用主项目中C/C++代码生成部分中的/ MTD选项进行编译,并且所有依赖项都已成功构建.

接下来,我将选项从/ MTD更改为/ MDd,并且所有相关项目再次成功构建.但是对于主项目,报告了以下错误:


LIBCMTD.lib(osfinfo.obj) : error LNK2005: __open_osfhandle already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(lseeki64.obj) : error LNK2005: __lseeki64 already defined in MSVCRTD.lib(MSVCR80D.dll)


sqlite3x.lib(sqlite3x_command.obj) : error LNK2005: "protected: wchar_t * __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >::_Myptr(void)" (?_Myptr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEPA_WXZ) already defined in msvcprtd.lib(MSVCP80D.dll)

MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __mkdir already defined in LIBCMTD.lib(mkdir.obj)

MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __strdup already defined in
LIBCMTD.lib(strdup.obj)

   Creating library Debug/Application.lib and object Debug/Application.exp
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library …
Run Code Online (Sandbox Code Playgroud)

linker visual-studio-2005 msvcrt visual-studio visual-c++

2
推荐指数
1
解决办法
3274
查看次数

在64位python ctypes中使用msvcrt

我想使用ctypes包从64位python中调用msvcrt函数.我显然做错了.这是明智的正确方法吗?

Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>> libc = ctypes.cdll.msvcrt
>>> fp = libc.fopen('text.txt', 'wb') #Seems to work, creates a file
>>> libc.fclose(ctypes.c_void_p(fp))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
WindowsError: exception: access violation reading 0xFFFFFFFFFF082B28
>>>
Run Code Online (Sandbox Code Playgroud)

如果这个代码做了我想要的,它将打开并关闭一个文本文件而不会崩溃.

python 64-bit ctypes msvcrt

2
推荐指数
1
解决办法
1394
查看次数

如何链接msvcr100.dll?

我在Visual Studio 10中编译项目,编译后的可执行文件在win 7上运行正常,但由于缺少msvcrt100.dll而无法在win xp上运行.我尝试使用"/ NOTDEFAULTLIB",但它也删除了我使用的其他一些外部库.有没有办法不链接最新的Microsoft运行时库?

提前致谢.

c++ compiler-construction linker msvcrt visual-studio-2010

2
推荐指数
1
解决办法
5476
查看次数

如果声明了一个大变量,为什么C程序会崩溃?

我在Microsoft Visual Studio Express 2012中编译了以下C程序:

int main() {
   int a[300000];
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这与msvcr110d.dll中的堆栈溢出崩溃!__ crtFlsGetValue().

如果我将数组大小从300,000更改为200,000它可以正常工作(因为这个简单的程序可以说是"工作",因为它没有做任何事情).

我在Windows 7上运行,并且还在Cygwin下使用gcc尝试了这个并且它产生了相同的行为(在这种情况下是一个seg错误).

有没有搞错?

c windows msvcrt

2
推荐指数
1
解决办法
809
查看次数

Windows SxS可再发行版本问题

我有一个程序拒绝在某些Windows 7计算机上运行.使用sxstrace,可执行文件声称需要Microsoft.VC80.CRT/MFC版本8.0.50727.6195和8.0.50608.0.见下文.

> INFO: Parsing Manifest File C:\Program Files
> (x86)\PFPS\falcon\fvw.exe.   INFO: Manifest Definition Identity is
> (null).   INFO: Reference:
> Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
> INFO: Reference:
> Microsoft.VC80.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
> INFO: Reference:
> Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50608.0"
> INFO: Reference:
> Microsoft.VC80.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50608.0"
> INFO: Resolving reference
> Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195".
> INFO: Resolving reference for ProcessorArchitecture WOW64.
>     INFO: Resolving reference for culture Neutral.
>       INFO: Applying Binding Policy.
>         INFO: No publisher policy found.
>         INFO: No binding policy redirect found.
>       INFO: Begin …
Run Code Online (Sandbox Code Playgroud)

redistributable winsxs msvcrt windows-7

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