Articles of 视觉工作室

CBitmap :: LoadBitmap()拒绝加载资源

我正在处理一个包含位图资源的DLL。 我通过Visual Studio中的资源视图导入了该位图。 该DLL还会导出一个具有试图加载位图的函数的类: BOOL CMyExportedClass::Create(CWnd* pParentWnd /*= NULL*/) { if (!m_bitmap.LoadBitmap(IDB_BITMAP1)) return FALSE; // … } 从MFC应用程序我加载DLL。 在应用程序InitInstance()函数内部,我调用一个最终调用CMyExportedClass::Create()的DLL的导出函数。 但是, LoadBitmap()总是返回0 ,根据文档指出内存不足(不是这种情况)或资源不存在。 位图文件是我的DLL项目的一部分, IDB_BITMAP1在.rc文件中以及在resource.h中定义 : MyDLL.rc: IDB_BITMAP1 BITMAP "res\\mybitmap.bmp" RESOURCE.H: #define IDB_BITMAP1 1034 我已经检查过,ID只定义了一次。 FWIW:在调用LoadBitmap() ,DLL InitiInstance()函数已经成功返回。 LoadBitmap()拒绝加载资源的原因是什么?我该如何解决这个问题? 编辑: 我可以成功加载资源,而不是m_bitmap.LoadBitmap(IDB_BITMAP1)我做到以下几点: HBITMAP hBitmap = (HBITMAP)LoadImage(hCurrentModule, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, 0); if(hBitmap) m_bitmap.Attach((HBITMAP)hBitmap); 那么CBitmap::LoadBitmap()和LoadImage()函数在这里有什么LoadImage()呢?

什么是WINAPI_FAMILY_ONECORE_APP?

我正在通过GitHub微软的OpenSSL端口。 一个提交引起了我的注意,那就是添加Win10通用平台支持 。 在提交中,出现了名为WINAPI_FAMILY_ONECORE_APP的分区。 不过,在search时我并没有find太多的东西。 英文有两首,中文有二十二首(见下)。 以下Visual Studio Tools for Windows 10 Preview中的新function提供了一些没有任何解释的准点符号: 新的API分区WINAPI_FAMILY_ONECORE_APP ARM 64 通用CRT … 我有两个问题: 什么是WINAPI_FAMILY_ONECORE_APP ,以及如何使用它? 我可以使用WINAPI_FAMILY_ONECORE_APP 检测Windows 10小工具上的Aarch64 / ARM64吗? 这里是微软在OpenSSL中的使用( 从ssl/dtls1.h ; C ++注释被移到了define的可读性之上): // winsock.h not present in WindowsPhone/WindowsStore, defining the expected struct here #if defined(WINAPI_FAMILY) && ( WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP || WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_ONECORE_APP) struct next_timeout { long […]

用Visual Studio 2010构buildLinux内核

有没有人有关于如何使用Visual Studio 2010构buildLinux内核的分步说明? 我试图直接寻找这个问题的解决scheme,但没有喜悦。 我已经能够发现的一些事情: Linux内核是使用GNU C编译器构build的,因此先决条件是构build一个Windows GNU C编译器,以便编译一个Linux GNU C编译器。 我知道GNU C编译器的源代码可以从GNU.org获得,但是有没有人使用Microsoft Visual Studio 2010 C / C ++编译器为Windows构build了GNU C编译器? 一旦制作了Linux GNU C编译器,我就可以使用它来构buildLinux内核以及任何其他基于Linux的软件来获得Linux系统。 这是我从www.linuxfromscratch.org得到的 你们中的一些人可能想知道为什么我不简单地为此下载一个预编译的GNU C编译器? 我工作的环境与任何外部networking完全分离。 即使运动鞋网是不允许的。 每一个软件都必须从源代码编译,这些源代码必须手工input。 这是低效的,但也是偏执安全的。 (不要问,我不是老板…) 无论如何,我们正在考虑引入内部的Linux机器,但是我们从Windows 7和Visual Studio 2010开始。有人可以告诉我们如何将所有重新input的源代码转换成可用的GNU C编译器视窗? 还为Linux? 感谢您的任何build议!

Linux上的哪些C ++ IDE与Visual Studio相比具有“智能感知”或​​更好?

pipe道中有一些基于Linux的C ++项目。 我应该select什么样的IDE,它与某种纯粹的Visual Studio(也就是说,没有Visual Assist类固化)相比具有某种“智能感”。 (请注意,我没有使用“和…一样好或者更好”的字眼,我认为Visual Studio C ++中的intellisense一切都很好,因此与“Visual Assist”的评论相同)。

C# – 将大文本文件(150MB)读入Rich Text Box

我试图读入一个150MB的文本文件到一个富文本框。 目前,我正在使用StreamReader遍历文件中的每一行,将每一行附加到一个StringBuilder实例。 这适用于较小的文件,但是当试图读取大文件时,我得到一个System.OutOfMemoryexception。 我没有看到任何读取150MB文件的问题 – 有足够的物理内存,这是在Windows 32位应用程序地址空间。 如果任何人在这里有任何想法如何做到这一点,将不胜感激。 我会在最后附上我的代码。 谢谢。 StringBuilder sb = new StringBuilder(); using (StreamReader sr = new StreamReader(fileLocation)) { string line; while ((line = sr.ReadLine()) != null) { sb.AppendLine(line); } } return sb;

在Windows XP中使用Visual Studio 2015中的XP定位进行编译时发生致命错误

我正在使用TR2的文件系统库来检索last_write_time函数的文件的最后修改时间,但是当last_write_time时,在Windows XP上发生致命错误。 我无法隔离在Windows XP上导致致命错误,但在Windows 7/8/10上没有导致严重错误的代码。 DLL项目(致命错误) CheckRevision.cpp CheckRevision.h util.cpp util.h 这里是我尝试隔离有问题的代码与EXE项目,不给一个致命的错误: main.cpp 这是错误: exception:001B:07043EAC 0xC0000005(ACCESS_VIOLATION) “0x07043EAC”处的指令引用“0x00000000”处的内存。 内存不能被“读取”。

什么是数据断点?

我刚刚才知道有数据断点。 在过去的5年里,我使用Visual Studio工作了C ++,并且从来没有使用过数据断点。 有人可以指出什么数据断点,何时使用它们以及如何使用VS? 根据我的理解,当我们想要检查variables值的变化时,我们可以设置一个数据断点。 在这种情况下,我们可以用variables值的条件设置数据断点。 任何其他的例子?

发布模式VS MS Visual Studio Windows中的DEbug模式

我正在使用MSVS 9(VS 2008)。 我的应用程序以及共享库(dll)(我用来链接我的应用程序)也是c ++环境。 现在观察下面的情况: 当共享库/ DLLbuild立在debugging模式,我的应用程序也build立在debugging模式结果:应用程序执行成功 当共享库/ DLLbuild立在发布模式,我的应用程序也build立在发布模式结果:应用程序执行成功 当共享库/ DLLbuild立在发布模式,我的应用程序也build立在debugging模式结果:应用程序正在崩溃,没有从调用堆栈中加载任何符号。 调用堆栈: ntdll.dll中!76e94684() [下面的框架可能不正确和/或丢失,没有为ntdll.dll加载符号] ntdll.dll中!76e7d55f() ntdll.dll中!76e5fa18() ntdll.dll中!76e2b3c8() 当我尝试在我的应用程序中使用以下SetName()和GetName()定义时,会看到此问题。 using namespace std; void main() { Schema * schemaExp = new Schema(); schemaExp -> SetName("ExpSchema"); string srctable; srctable=schemaExp->GetName(); cout <<"\nConnection EXPORT using the target table:" << srctable.c_str() << endl; delete schemaExp; } 模式类定义: using namespace std; […]

确定DLL的加载path

我希望在以下结构中有我的申请。 Exe | |—– DLL\DLL.dll, DLL\common.dll | |—– DLL2\DLL2.dll, DLL2\common.dll 我的EXE将通过加载DLL LoadLibraryEx(_T("DLL\\DLL.dll"), 0, 0); LoadLibraryEx(_T("DLL2\\DLL2.dll"), 0, 0); DLL.dll和DLL2.dll项目将通过lib文件链接到common.dll 。 虽然会有2个不同版本的common.dll 。 但是,在执行期间, Exe期望我把common.dll与Exe相同的目录下,但不能和DLL和DLL2 。 有什么办法可以解决这个问题,通过能够有上述的目录结构。 不过,还是使用lib与common DLL/DLL2链接。

LNK2038:检测到“boost_log_abi”不匹配:值“v2s_mt_nt5”与值“v2s_mt_nt6”不匹配

在创build由boost库组成的独立头文件后,我尝试将其包含在现有项目中。 但它显示以下错误: :: Error 15 error LNK2038: mismatch detected for 'boost_log_abi': value 'v2s_mt_nt5' doesn't match value 'v2s_mt_nt6' in BoostLogger.obj E:\Projects\native\dcnotificationserver\loggerutil.obj :: 我知道以前的项目从Windows XP工作到当前的Windows操作系统(即)10。 但是我读了Windows XP的增强支持。 问题是什么? 如何解决? 我觉得由于windows版本的问题? 欲了解更多信息,请询问我。 编辑: 我在用着: 编译器:msvc 10 升压版本:1.60 Visual Studio 2010