草庐IT

AppInit_DLL

全部标签

windows - 在 Windows 上使用 gfortran 创建 DLL

我想在Windows上为Fortran项目(实际上是Fortran+C)创建DLL。当一个dll依赖于另一个dll时,我遇到了在Linux上没有遇到的麻烦。这是一个简短的例子:文件dll1.f90moduledll1implicitnonecontainssubroutinetest1write(*,*)"test1ok"endsubroutineendmodule文件dll2.f90moduledll2usedll1,only:test1implicitnonecontainssubroutinetest2calltest1endsubroutineendmodule文件main.f

windows - 在 Windows Vista 上以编程方式注册 .dll(使用 DllRegisterServer)

无需调用regsvr32.exe,可以使用以下步骤注册.DLL:HINSTANCEhLib=::LoadLibraryEx(dllPath,NULL,LOAD_WITH_ALTERED_SEARCH_PATH);HRESULT(STDAPICALLTYPE*lpDllEntryPoint)(void);(FARPROC&)lpDllEntryPoint=::GetProcAddress(hLib,"DllRegisterServer");constHRESULThRes=(*lpDllEntryPoint)();这在WindowsXP上运行良好。遗憾的是,它在Vista上失败了,但仅限

windows - 如何从 DLL 中获取 HWND?

我有一个DLL,我想使用DirectSound播放声音。为了播放声音,我需要可执行文件的HWND。我没有加载DLL的可执行文件的HWND。我如何在不从可执行文件传递它的情况下在DLL中获取它? 最佳答案 你可以使用GetCurrentProcessId获取当前进程ID。然后您可以调用EnumWindows,并使用GetWindowThreadProcessId检查每个窗口查找与您的进程关联的窗口。但是,更简单的选择可能是只生成您自己的窗口。您可以创建一个不可见的1x1像素窗口,并将其与DirectSound一起使用。即使您的调用进程

c# - 如何在未安装驱动程序时禁止 FTDI .NET DLL 提醒用户

我有一个使用FTDI的FTD2XX.DLL的C#应用程序。此应用程序用于单个产品的多代并抽象物理硬件。有一个FTDI和一个HID实现。应用程序搜索合适的FTDI和HID设备,但如果用户拥有HID代,则可能不存在FTDI驱动程序。现在抛开背景。当我实例化FTDI类时,我得到一个模式,不是由我的代码生成的关于找不到FTDI驱动程序并询问用户是否安装了驱动程序。我尝试将它包装在TRY/CATCHblock中,但没有抛出异常。1:有没有办法在尝试实例化FTDI类之前确定是否安装了FTDI驱动程序?2:如果没有,有没有办法禁止FTDIdll在发生这种情况时提醒用户?

c# - System.DllNotFoundException : Unable to load DLL. 开发机器没有错误但目标机器有错误

我在VisualStudio2012上使用WPF构建了一个C#应用程序,该应用程序使用C++DLL并面向.NET4.5。我有两个项目正在运行,一个用于C#项目,另一个用于C++DLL项目。我将这两个项目发布到一个文件夹中,该文件夹中有一个用于C#的.exe和一个用于C++的.dll。我在开发它们的机器上运行它们,一切正常。我在其他机器上运行.exe并抛出此异常:System.DllNotFoundException:UnabletoloadDLL无法识别同一文件夹中的DLL。我尝试了很多东西,但似乎没有任何效果。我遵循了thispost中的解决方案但没有任何效果。Dev和Target机

c++ - Qt构建为没有dll的单个exe文件

我已经在Widows7上使用Qt库编写了一个简单的对话框。现在我需要将该.exe文件发送给我的friend,以便他可以使用它。但我还需要发送大约10个.dll文件,这样他才能使用它。我已经找到并发送了所有这些,但他无法打开它。有一些“VisualC++运行时错误”。坦率地说,在我的另一台电脑上我也无法打开它,并出现同样的错误。我在谷歌上搜索了很多,并找到了不同的答案,例如:更新DirectX安装MicrosoftVisualC++2010RedistributablePackage(vcredist_x86.exe)但这一切对我没有帮助。所以我的问题是:为什么它可以在我开发该对话框的计

windows - 为什么打开的 DLL 句柄不能保护文件不被移动?

我刚刚遇到一个令人惊讶的错误,其中一个DLL文件是使用LoadLibrary加载的API调用在加载时被重命名。显然,在文件上有一个打开的DLL句柄并不会阻止该文件被重命名,甚至不会被移动到不同的路径。但是,它受到保护,不会被删除和移动到不同的磁盘。如果发生这种情况,使用DLL的程序继续正常工作。ProcessExplorer显示DLL句柄的路径相应更新。此行为不同于Windows中的普通文件句柄。例如,当保持一个打开的std::ifstream到同一个DLL时,操作系统不再允许重命名。我发现这种行为非常令人惊讶,想知道是否有人可以对此做出解释?特别是我对允许这样做的理由很感兴趣,因为我

java - java.library.path 中的 org.hyperic.sigar.SigarException : no sigar-amd64-winnt. dll

我的测试程序的依赖项是org.fusesource.sigar,我还在我的类路径中添加了sigar-1.6.4.jar。我知道将sigar-amd64-winnt.dll添加到我的类路径可能会有所帮助,问题是我在哪里可以找到这个文件?我已经搜索过,甚至尝试下载它,但都没有成功。非常感谢您在这方面的帮助org.hyperic.sigar.SigarException:nosigar-amd64-winnt.dllinjava.library.pathatorg.hyperic.sigar.Sigar.loadLibrary(Sigar.java:172)atorg.hyperic.sig

windows - 如何告诉 rustc(通过 cargo)在哪里可以找到我的 dll 导入库

我正在用mingw生成一个供Rust使用的dll。我知道我可以将我的libxxx.a文件放在"Rust\bin\ruSTLib\x86_64-pc-windows-gnu\lib"目录中,这就是我的内容我现在正在做。但我宁愿将它保存在我的项目目录中。我如何让Cargo告诉rustc在哪里找到它? 最佳答案 首先,可以使用cargorustc将-Ldir参数直接传递给rustc:cargorustc---Llib如果您的库位于lib子目录中。另一种可能更方便的方法是使用buildscript自动将库目录传递给rustc。然后它将与其他

windows - 我应该复制哪些 Qt DLL 以使我的程序独立运行?

我正在尝试为我的应用程序创建一个分发目录。我已经将几个QtDLL复制到那个目录,程序似乎可以正常工作,但有一个异常(exception):它似乎没有找到SQLite的SQL插件。将qtsqlite.dll复制到目录,不允许我的应用程序打开或创建SQLite文件。目录结构必须是什么,或者需要复制哪些附加文件,程序才能读取数据库? 最佳答案 你可以使用depends.exe以准确查看您的exe的依赖项并确保它们都包含在内。另请阅读thispage关于qt插件。它们应该在一个名为“插件”的特定目录中,而不是在包含所有其他dll的主目录中。