crt

    3热度

    1回答

    我一直对Microsoft的CRT有许多概念问题。对于任何项目,您必须编译所有必需的库以链接到相同版本的CRT。 第一个问题是当您的项目与CRT(/ MT)静态链接时。然后所有的依赖库也必须静态链接自己的CRT。因此,每个库都有自己的版本 - 例如 - malloc()。如果您去年在系统A上编译了其中一个库,则该CRT版本可能与您当前在另一个带有Service Pack 3+的系统B上使用的版本不

    4热度

    2回答

    我知道,当你编译和链接C程序,你 C库链接它 C运行时启动代码 我不知道如果我写一个程序(在新语言,或只是C而不链接到此代码),并直接将其链接到C代码共享库(比如zlib或gsl或fftw或其他),并省略C库和C启动代码(假设我的程序将加载外部库本身使用它的魔法),这将“只是工作”?我知道我在CRT启动时有一些初始化代码,所以我不知道如何让我的应用程序本身不依赖于C库而调用所需的函数:因此加载外部

    1热度

    1回答

    Windows应用程序动态链接CRT。应用程序执行其部分代码后,它将加载共享库。共享库与CRT静态链接。 我的问题是: 如果应用程序在DLL的代码做了一些修改为“CRT状态”(例如重新打开标准输出的一些文件), 将这些变化是有效的? 谢谢

    3热度

    2回答

    所以我明白CreateThread和CRT会导致内存泄漏,信号不起作用,并且应该使用_beginthread或_beginthreadex函数。当编写一个应用程序时,这一切都很好,但是那些为其他应用程序编写dll等的应用程序(无论是普通的c dll,com对象,插件等)如何。没有办法保证如何创建一个调用DLL的线程,即使他们使用了__beginthread(ex),它很可能打赌他们有不同的CRT实

    1热度

    2回答

    我正在建立一个应用程序依赖boost。我的应用程序输出是最终被另一个客户端应用程序使用的库。我最近发现我在调试模式下使用/ MDd生成代码(调试CRT库),并且即使在调试模式下,客户端应用程序也是针对发布CRT构建的。因此,这可能会导致一些内存堆损坏错误。为了证实这一点,我在释放模式下测试了所有的东西,并且在这里一切正常。 为了解决这个问题,我在调试模式下构建了我的应用程序,针对CRT发布库...

    2热度

    1回答

    我正在使用_set_invalid_parameter_handler重写程序的默认行为,当CRT函数获取一个无效的参数,它将与0xc0000417(STATUS_INVALID_CRUNTIME_PARAMETER)崩溃。 这是我的处理程序: void my_invalid_parameter_handler( const wchar_t * expression, const

    0热度

    2回答

    我们的应用程序分配几何坐标大的std :: vector <> 它必须是一个向量(意思是连续的),因为它最终发送到OpenGL来绘制模型。 Open GL使用连续的数据。 在某些时候分配失败,这意味着保留内存会抛出std :: bad_alloc异常。 但是现在有很多内存仍然可用。 问题是连续块不能分配。 所以第一次两个问题是: 有什么办法来控制,其中CRT分配内存的方式?或者一个碎片整理方法(疯

    2热度

    1回答

    当我需要在不同版本的MSVC中构建一些用于我的几个项目中的第三方库时,我通常会为其每 MSVC版本和两个调试版本配置。这就是推动力所在,而这正是我们在我们整个人生中为我们所做的一切。 但是,我仍然没有得到,为什么我不能像建立这个库...什么。我需要的只是函数原型和目标代码,对吧?由于我静态链接CRT,我没有外部依赖。但是当我试图将MSVC8下的Release版本与我在MSVC10下调试的项目链接起

    0热度

    1回答

    可能重复: Why is runtime library a compiler option rather than a linker option? 我不清楚地了解为什么我在编译阶段选择RTL 的类型? 例如,我创建了一个静态库A.lib与选项/ MD。 然后,我用选项/ MT创建了第二个静态库B.lib。 当我尝试链接A.lib和B.lib到我的C.exe 我会得到链接错误。 但在编译阶段(创

    1热度

    3回答

    我有第三方C库,它可以在CRT错误崩溃。在这种情况下整个过程崩溃。有什么办法可以捕捉到所有CRT错误并防止进程终止。