草庐IT

windows - 旧的 16 位应用程序间歇性地导致 WIN87EM.DLL 中的 GPF

我有一个旧的16位应用程序,它是为Windows3.1开发的。它执行一些计算并且是更复杂系统的一部分。系统为程序设置输入,并收集输出结果。不幸的是,16位程序在此期间仍然存在,因此我们必须解决它在现代操作系统上造成的问题。系统运行在WindowsXP上,在WindowsXP物理机上运行正常。我遇到问题的机器是在Debian机器上的VirtualBox(版本4.1.12)上运行的WindowsXP实例。物理计算机是HPProliant服务器,具有四核至强3.4Ghz。我正在使用远程桌面从我的Windows7机器访问计算机。我得到的错误是,“程序在地址为0001:02C9的WIN87EM.

c++ - 从客户端应用程序调试动态库

假设我在Debug模式下编译了一个动态库(WindowsDLL和/或Linux共享对象文件,.so),供动态链接到它的客户端应用程序使用。我的源代码可供客户端应用程序开发人员使用。我需要对以下调试场景进行一些说明。我一直理解/假设为了让客户端应用程序调试到我的库中(例如,为了让客户端应用程序开发人员在调试时进入我的源代码,比如在MSVC++中使用F10),他们必须实际构建一个我的库本身的本地拷贝(可以访问我的源代码),或者至少可以在本地访问我的源代码而无需构建它(不确定这是否足够?)。我说得对吗?换句话说,如果客户端应用程序动态链接到我的应用程序,我认为仅仅提供带有调试符号的库(MSV

windows - 我如何知道我的程序是否已经加载了某个 DLL?

我正在开发一个基于插件架构的程序。所有插件都是DLL,其中一些可以依赖于其他插件DLL。我希望能够执行以下操作:在程序启动时,扫描插件文件夹。对于找到的每个插件,检查该插件是否已经加载。(这可能是,如果以前加载的插件导致它作为依赖项加载)。如果没有,加载它。第一步和第三步很简单,但是我该怎么做第二步呢?是否有一个winapi调用,给定一个DLL的文件名,会告诉我该DLL当前是否已加载到当前进程中?(或者可能需要一个文件名和一个进程句柄?)拜托,没有回答说“无论如何都要加载它。”我知道那会奏效。我正在努力避免这种情况。 最佳答案 Ge

c++ - 如何在当前目录下强加dll文件?

此应用程序使用msado15.dll、msvcr100.dll和许多dll。我发现应用程序不会使用ProcessExplorer和DependencyWalker在当前目录中加载msado15.dll和msvcr100.dll文件。相反,此应用程序从winsxs文件夹或不同的Windows系统目录加载dll。我想阻止它在“非当前目录”中加载dll即使没有我复制的dll也能正常工作。我该如何解决这个问题?任何帮助将不胜感激。提前致谢! 最佳答案 我做了一些研究,这实际上很容易。根据thisarticle,您所要做的就是创建一个名为(Y

windows - MFC .dll 调试断言

我正在尝试创建一个shell扩展,但我在这行代码中得到了一个调试断言:_AFXWIN_INLINEHINSTANCEAFXAPIAfxGetResourceHandle(){ASSERT(afxCurrentResourceHandle!=NULL);//herereturnafxCurrentResourceHandle;}它有什么问题?我创建了这个类classCMyExtShellExtApp:publicCWinApp{public:virtualBOOLInitInstance();virtualintExitInstance();DECLARE_MESSAGE_MAP()};

windows - 我可以在单个 DLL header 中混合使用 C 和 C++ 导出吗?

在这里帮助我,因为我一半相信我不能做我想做的事,一半相信应该有一个合适的解决方法。我有一个用C++实现的DLL,因此将一些类导出到链接到它的其他C++模块。没关系。现在我想从C模块(另一个DLL)链接到这个DLL,所以我将提供一个“扁平化”C接口(interface)并在内部处理C++内容。这也很好。问题是我想将其作为单个.h和关联的.lib提供给C或C++客户端。所以我的DLL中有类似于以下内容的内容:#ifdefDLL_EXPORTS#defineDLL_API__declspec(dllexport)#else#defineDLL_API__declspec(dllimport)

windows - 如何检查生成的dll是静态链接还是动态链接?

以下是我的链接命令:RunningMkbootstrapforXML::SAX::ExpatXS()C:\Perl\bin\perl.exe-MExtUtils::Command-echmod--644ExpatXS.bslink-out:blib\arch\auto\XML\SAX\ExpatXS\ExpatXS.dll-dll-nologo-nodefaultlib-debug-opt:ref,icf-libpath:"C:\Perl\lib\CORE"-machine:x86ExpatXS.obj-def:ExpatXS.defCreatinglibraryblib\arch\a

windows - 传递给 mshtml.dll 的参数是什么?

我目前正在尝试使用mshtml.dll打印HTML文件。在注册表中查找我找到的html文件,以下打印到条目:"%systemroot%\system32\rundll32.exe""%systemroot%\system32\mshtml.dll",PrintHTML"%1""%2""%3""%4"没想到有一些参数要传递给mshtml.dll,请问mshtml.dll的参数是什么(在这个注册表信息中编号为%1、%2、%3、%4)? 最佳答案 您在html文件progid的printto动词中找到了它。当您从资源管理器中拖动一个HTM

c++ - 使用 rundll32.exe 调试 native dll,无法加载符号

我正在编写一个nativedll,该dll将与rundll32.exe一起运行(这是我们客户的义务)。我使用VS的调试属性来定义:Command:c:\windows\system32\rundll32.exeCommandArgument:$(TargetPath),ENTRY_POINTENTRY_POINT是我的dll的导出函数,它遵循rundll32.exe接口(interface)。此设置调用我的函数,但不会加载任何符号,因此不会触发任何断点。我了解到我的函数只有在调用MessageBox入口后才会被调用。当我使用自己的容器应用程序时(只是一个exe调用Loadlibrary

windows - 赢得批处理 : copy files on different folders

我有一个包含在调试和发布中构建的dll文件的bin文件夹:myFirstFile.dllmyFirstFiled.dllmySecondFile.dllmySecondFiled.dll...文件名各不相同,但规则是在Debug模式下构建的dll以'd'结尾。我无法在.bat脚本中找到将这些文件复制到名为Debug和Release的两个不同文件夹的方法,以便将以“d”结尾的dll复制到Debug文件夹中,将所有其他文件复制到Release文件夹中。 最佳答案 mkdirDebugmkdirReleasefor%ain(*.dll)d