jjzjj

DllImport

全部标签

windows - 我可以在构建 Go 程序的同时静态链接一些 DLL 吗?

如果您在慢速硬盘上运行带有WindowsDLL依赖项的go应用程序,有时会发生Windows加载这些dll的时间过长。如果您将go应用程序放入Windows服务中,您会遇到严重的问题。特别是在慢速硬盘上,这会导致windows服务超时,服务无法启动。是否有可能以某种方式将这些DLL静态链接到go应用程序?加载DLL后一切正常,但需要两次尝试才能使服务运行。但是在第一次失败后,Windows不会再尝试启动该服务,所以我只好自己手动启动该服务。有人有想法吗? 最佳答案 简短的回答是“否”:“DLL”代表“动态链接库”,静态链接DLL是不

c - 为什么 Windows 要求导入 DLL 数据?

在Windows上,可以从DLL加载数据,但需要通过导入地址表中的指针进行间接访问。因此,编译器必须知道正在访问的对象是否是使用__declspec(dllimport)从DLL导入的。类型说明符。这很不幸,因为这意味着设计用作静态库或动态库的Windows库的header需要知道程序链接到哪个版本的库。此要求不适用于函数,这些函数是为DLL透明地模拟的,stub函数调用实际函数,其地址存储在导入地址表中。在Linux上,动态链接器(ld.so)将所有链接数据对象的值从共享对象复制到每个进程的私有(private)映射区域。这不需要间接寻址,因为私有(private)映射区域的地址是模

windows - 在远程 Windows 机器上动态运行 DLL?

有没有办法在远程Windows机器上动态运行DLL?假设用户想要将自己的DLL文件发送到远程服务器并在远程站点运行该DLL中的函数。用户可能能够提供函数入口点以及所需的参数,但仅此而已。(例如没有头文件)我正在考虑在远程站点设置一个代理可执行文件,它可以(1)动态加载和绑定(bind)未知的DLL,以及(2)运行带参数的函数。这是一个好的方法,还是这样的可执行文件可能? 最佳答案 您可以使用动态加载DLL的技术。通常,您通过将.LIB静态链接到您的项目并编译它来使用DLL。要在运行时动态加载DLL,您可以使用以下WIN32API函数

windows - Windows 资源管理器使用哪些 DLL 文件?

我需要知道Windows资源管理器为项目使用了哪些库(WindowsShell)。是的,它显然使用了shell32.dll但还有其他什么? 最佳答案 您可以使用DependencyWalker查看Explorer引用的内容。 关于windows-Windows资源管理器使用哪些DLL文件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10974866/

windows - 如果它的导出没有改变,我是否需要针对 dll 进行重建?

这可能是一个非常愚蠢的问题。但是假设我有一个带有一些导出的DLL(test.dll),在构建时会生成一个导入库(test.lib)。我有一个使用此DLL的应用程序TestApp。现在,如果我想更改DLL中某些函数的实现,并且保持导出不变,我是否需要重建使用此DLL/导入库的应用程序?谢谢。 最佳答案 没有。您不需要针对dll进行重建。假设您的应用程序可以在WindowsXP上运行,而有一天Windows7出现了。即使user32.dll、kernel32.dll等系统dll已更新,相同的应用程序也无需重建即可继续工作!

c++ - 哪个模块在 Windows 上实现了 CreateWindowW?

我刚刚在我的应用程序中遇到问题,我需要获取CreateWindowW的静态地址功能。就像这样:&ShowWindow;但是,当使用CreateWindowW执行相同的操作时,我得到编译器错误Identifier"CreateWindowW"isundefined(它是一个宏)。我实际上找不到这个函数的定义位置(哪个DLL),甚至找不到pinvoke.net没有提到这一点。在一些网站上提到它是user32.dll,但是GetProcAddress我的函数里面它返回空指针。我迷路了,Windows上的哪个模块为此功能链接?如果我尝试连接调试器并跟踪对这个函数的调用,VisualStudio

windows - 为什么加载 dll 不需要完整的文件路径?在什么情况下此功能会有用?

为什么Windows在调用LoadLibrary时不需要完整的文件路径,或者对于带有已注册DLL的CLSID等。在什么情况下有人会受益于不得不退回到DLL搜索顺序来查找dll?我的意思是,%SystemRoot%或%ProgramFiles%等变量可以将您带到适当的文件夹,而.\会让您留在当前目录中。那么为什么要含糊其词? 最佳答案 对于与GetProcAddress()的显式链接,我认为应该尽可能使用DLL的绝对路径。对于与.lib文件的隐式链接,必须在链接时确定DLL的名称,这排除了绝对路径。最安全的做法是将DLL放在与可执行文

c# - GetFocus - Win32api 帮助

我正在尝试从用户计算机上打开的表单中获取选定的文本。目前我已经尝试使用GetFocus定义为'[DllImport("user32.dll")]staticexternintGetFocus();'在api中它说-如果窗口附加到调用线程的消息队列,则检索具有键盘焦点的窗口的句柄。这解释了为什么我的应用程序可以获取选定的文本从我的应用程序的一部分窗口,而不是外部窗口,例如pdf。我可以使用哪种替代win32方法来满足此目的?谢谢。编辑:这是目前的尝试[DllImport("user32.dll")]静态外部intGetFocus();[DllImport("user32.dll")]st

windows - 在 Nim dll 中加载函数

我有两个文件:foo.nim:procdouble*(x:cint):cint{.cdecl,exportc:"double",dynlib.}=returnx*2bar.nim:procdouble(x:cint):cint{.cdecl,dynlib:"foo.dll",importc.}echodouble(2)我通过运行nimc--app:libfoo.nim编译foo.nim,生成foo.dll。当我运行bar.nim时,我希望它从foo.dll加载double并打印4,但是我收到此错误:couldnotimport:doubledllexp.exe只显示NimMainInn

python - 在 Python 中加载 dll 时出现 Windows 错误 1114

我目前正在尝试将一些代码从32位WindowsXP计算机移植到64位Windows10计算机。我需要在我的python代码中导入家庭开发的Cdll,如下所示:fromctypesimport*[...]self.inter_test_dll=windll.LoadLibrary("my.dll")self.w=QtWidgets.QWidget()self.wid=self.w.winId()self.wid.setsize(64)print(self.wid)self.inter_test_dll.dll_load_window(int(self.wid),'test')self.i