草庐IT

初始化OpenStack

全部标签

c++ - 将 Windows 可执行文件用作 DLL 时如何初始化 C 运行时

我正在尝试对我的Windows可执行文件中的类和函数进行单元/组件测试。我想运行实际的编译代码而不将测试用例构建到可执行文件中*。Microsoft工具非常乐意从可执行文件中导出类和函数,我可以链接到它,就好像它是一个DLL一样。问题-由于动态加载的可执行文件的入口点没有被调用并且没有DllMain(从技术上讲它不是DLL),C运行时没有在“DLL”中初始化并且静态没有被初始化**.有没有办法在动态加载的.EXE上下文中调用CRT_INIT并使一切正常工作,或者这很荒谬吗?*如果我在这里遗漏了一些明显的东西,请随时指出正确的方向。**这似乎是我最大的问题。

c++ - 在Windows中初始化静态全局变量时new返回NULL?

我正在努力将rLog与我们的代码库集成,我注意到Windows上存在一个在Linux上没有的问题。在头文件中,我有一个静态变量,它给了我一个“详细”的日志记录channel(基本上是从调试开始的),定义如下:staticRLogChannel*rlog_verbose=DEF_CHANNEL("verbose",Log_Debug);这在Linux上没有问题,但在Windows上,应用程序一启动我就会收到错误消息。我已经在rLog库中追踪到这一行:RLogChannel*rlog::GetComponentChannel(constchar*component,constchar*pa

c++ - 惰性初始化缓存...如何使其成为线程安全的?

这就是我所拥有的:Windows服务C#多线程服务使用读写锁(一次多次读取,写入会阻塞其他读/写线程)一个简单的、自写的数据库C++足够小以适合内存足够大,不想在启动时加载它(例如10GB)读取性能非常重要写作不太重要树状结构树节点中的信息存储在文件中为了更快的性能,文件仅在第一次使用和缓存时加载延迟初始化以加快数据库启动速度由于数据库会非常频繁地访问这些节点信息(每秒几千次),而且我不经常写,所以我想使用某种双重检查锁定模式。我知道这里有很多关于双重检查锁定模式的问题,但似乎有很多不同的意见,所以我不知道什么是最适合我的情况。你会用我的设置做什么?这是一个例子:一棵有100万个节点的

c - Win32 公共(public)控件初始化会破坏自定义控件吗?

所以我正在尝试在Win32中初始化公共(public)控件和视觉样式。我构建了一个包含我编写的一些自定义控件的DLL,以及一个包含GUI应用程序的EXE。通常,职责分离似乎是我的DLL不应该担心我们是否启用窗口样式。它应该只生成自定义控件并将它们公开给依赖的EXE。然后EXE可以决定它是否需要视觉样式,而DLL一点也不知道。问题是这样的:我让我的DLL在进程附加上的DllMain中注册它的窗口类。但是,如果我在EXE中调用InitCommonControlsEx,自定义控件中的按钮和诸如此类的东西不会显示,因为自定义控件在EXE可以初始化公共(public)控件之前注册。为了证明这一点

windows - 在配备 GeForce 960M 的笔记本电脑上初始化 D3D12 调试接口(interface)失败

当我尝试使用标志DXGI_CREATE_FACTORY_DEBUG调用D3D12GetDebugInterface或CreateDXGIFactory2时,调用在我的笔记本电脑上失败,但在我的台式机上却没有。其他调用在笔记本电脑上运行良好,我可以渲染东西——我只是无法初始化调试层。桌面有一个老式的GeForce650Ti,笔记本电脑是戴尔XPS15笔记本电脑(最新一代),它有一个GeForceGTX960M。两者都有最新的驱动程序(361.43)。有什么想法可能会出错吗?我在NVIDIA上发布了devtalkforum首先,但交叉发布到stackoverflow,因为NVIDIA官方论

c++ - 在全局变量的初始化/取消初始化中使用隐式加载的 DLL 中的函数

考虑一个使用导入库logging.lib的Windows程序,这样logging.dll将在运行时自动加载/卸载。另外,考虑主程序的翻译单元之一定义类类型的全局变量,如下所示:structInitGuard{InitGuard(){logging::initialize();}~InitGuard(){logging::deinitialize();}};InitGuardg_initGuard;除了更好的方法是在函数main中实例化InitGuard之外:是否保证logging.dll在调用InitGuard的c'tor时已经加载?更重要的是,是否保证logging.dll在Init

c++ - 调用者是否应该初始化 "out"参数?

许多Win32API函数的参数指定为“out”。例如,GetIconInfo()描述说明了第二个参数,函数填充结构的成员。这意味着该函数不会读取存储在“out”参数中的原始值-只会更改它们-因此调用者可以自由跳过初始化。然而在一个项目中我看到了以下内容:ICONINFOii;::SecureZeroMemory(&ii,sizeof(ICONINFO));if(::GetIconInfo(hIcon,&ii)){//dostuff,then//releasebitmapsif(ii.hbmMask)::DeleteObject(ii.hbmMask);if(ii.hbmColor)::

c - 在 C 中初始化地址为零的变量

这可能是一个非常基本的问题。我知道有一个C约定将空指针的值设置为零。您是否有可能在Windows中为新变量分配空间,而分配空间的地址恰好为零?如果不是,通常占用该地址区域的是什么? 最佳答案 在MS-DOS上,空指针是一个相当有效的指针,并且由于操作系统在realmode中运行实际上有可能用垃圾覆盖0x0地址并破坏内核。你可以这样做:inti;unsignedchar*ptr=(unsignedchar*)0x0;for(i=0;i现代操作系统(例如Linux、Windows)在protectedmode中运行它永远不会让您直接访问

c++ - 如何在结构数组中自动初始化最后一项?

我将一个数组传递给一个函数,并用一些值对其进行全局初始化。我在数组末尾使用空字符串来确定数组长度。现在,有没有什么方法可以自动初始化数组,使其末尾有额外的空项,这样我就没有机会从那里忘记它了?就像char[]的工作原理一样,它会向末尾的IIRC添加额外的null。这是我现在使用的代码:structtwostrings{strings1,s2;};twostringsoptions[]={{"text1","moretext1"},{"text2","moretext2"},{"text3","moretext3"},{""},//tellsthatthearrayendshere}in

MySql安装数据库初始化报错

我在mySql安装程序社区版中的应用配置部分遇到错误,在我执行初始化数据库后,它只是给了我错误,这是日志:开始配置步骤:编写配置文件配置步骤结束:写入配置文件开始配置步骤:更新Windows防火墙规则尝试使用以下命令删除Windows防火墙规则:netsh.exeadvfirewallfirewalldeleterulename="Port3306"protocol=TCPlocalport=3306已删除1条规则。好的。在端口3306上为MySQL80添加Windows防火墙规则。尝试使用以下命令添加Windows防火墙规则:netsh.exeadvfirewallfirewalla