Articles of DLL

获取'程序的问题php_var_unserialized_init找不到'

我正在为Windows设置Solr for Moodle 3.1 。 我的PHP信息看起来像PHP 7.0.21 (CLI)(内置:2017年7月5日13:31:19)(ZTS),我运行Windows 10,64位。 我从https://pecl.php.net/package/solr/2.4.0/windows下载了“7.0线程安全(TS)x86”。 我已经添加了' extension=php_solr.dll '到我的php.ini @path C:\ xampp \ php:php.ini。 当我把php_solr.dll从'7.0线程安全(TS)x64'放到'C:\ xampp \ php \ ext'时,我得到

加载共享库的两个实例

对于testing,我想从应用程序中加载共享库的两个实例。 库中的代码提供了一个API,但它不允许我初始化库的两个(或更多)实例,因为某些函数依赖于静态variables。 我目前正在为这个库编写unit testing,我想有两个实例,因为这会简化我的testing。 图书馆没有链接到程序中。 相反,我直接使用LoadLibrary / GetProcAddress(或Linux上的dlopen / dlsym)加载它。 要区分这两个库,我可以简单地使用不同的名称为我正在加载的函数指针… 以下是问题: 是否有可能加载这样一个库两次? 例如,库的所有加载的实例都应该有自己的数据段,不会相互影响。 如果是这样的话:这是可移植的Windows和Linux?

如何在Windows上为CMake自定义命令设置运行时PATH

我试图将一个* nix,基于CMake的项目移植到Windows。 主库所需的一个头文件是由一个自定义程序生成的,所以CMakeLists.txt文件包含如下内容: add_executable(TableGenerator "TableGenerator.cpp") target_link_libraries(TableGenerator ${LibFoo_LIBRARY}) add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Table.h" COMMAND TableGenerator "${CMAKE_CURRENT_BINARY_DIR}/Table.h" DEPENDS TableGenerator) 一个重要的细节是TableGenerator使用外部共享库LibFoo 。 例如,在Linux下,一切正常,因为libfoo.so安装在系统库目录之一(如/usr/local/lib ,或者CMake甚至在可执行文件中设置rpath属性,说明在哪里find库。 然而,在Windows上,这些类库通常不会被安装到系统中,而只是被抽取或编译到构build树中或其附近的任意目录中。 为了使TableGenerator运行,需要将foo.dll存在或复制到Dynamic-Link Librarysearch顺序path之一(例如%WINDIR%\System32或TableGenerator的构build输出目录),这是不可取的。 如何设置自定义命令的PATH环境variables,即不在CMake运行期间使用,而是在实际的自定义构build步骤运行时期间使用?

使用CType检测从Windows DLL调用Python脚本

我正在寻求在Windows DLL中添加function来检测调用Python脚本的名称。 我正在通过Python使用ctypes来调用dll,正如我如何从脚本语言调用DLL所描述的那样? 在DLL中,我能够成功地确定调用过程使用WINAPI GetModuleFileName() http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197 (v=vs.85) .aspx 。 但是,由于这是一个Python脚本,因此它正在通过Python可执行文件运行,因此返回的模块文件名是“C:/Python33/Python.exe”。 我需要实际的脚本文件的名字进行呼叫。 这可能吗? 有一点关于为什么:这个DLL用于身份validation的背景。 它使用共享密钥生成一个散列,脚本用于validationHTTP请求。 它embedded在DLL中,以便使用脚本的人不会看到密钥。 我们要确保调用脚本的python文件是经过签名的,所以不是任何人都可以使用这个dll来生成签名,因此获取调用脚本的文件path是第一步。

windows,ImportError:DLL加载失败:指定的模块找不到

import numpy as np import cv2 from matplotlib import pyplot as plt img = cv2.imread('12.jpg',0) orb = cv2.ORB() kp = orb.detect(img,None) kp, des = orb.compute(img, kp) img2 = cv2.drawKeypoints(img,kp,color=(0,255,0), flags=0) plt.imshow(img2),plt.show() 我已经将numpy和cv2模块添加到我的python目录并设置它们的环境variables。 我也安装了msvcp71.dll和msvcr71.dll ,但是这个错误还没有解决。 那么我怎样才能解决这种DLL问题? 版本信息: Python 3.2 numpy的-1.6.1-Win32的superpack-python3.2 OpenCV的-3.0.0

VCRUNTIME140.dll缺失

当我尝试在Windows 10上安装apache 2.4时遇到问题。它始终显示VCRUNTIME140.dll丢失的错误。 我检查了其他线程,发现安装2015 Visual c + +可再分发包x64 / x86总是解决这个问题,但我已经安装,我仍然有这个问题。 还有其他解决scheme吗?

如何在win32控制台上parsing“printf”而不是“_printf”的符号?

testing平台是Windows 32bit。 所以基本上我想汇编+链接汇编代码片段在这些命令中: nasm -fwin32 test.s cl test.obj /link msvcrt.lib 它说 : error LNK2001: unresolved external symbol printf 在我的代码中,我有这样的函数调用: call printf 所以我把所有这些改成了 call _printf 它的工作。 我不熟悉Windows上的编程,但有没有办法解决printf的外部符号? 因为我正在做一些自动转换任务,并且用_开始转换所有的函数调用应该是非常单调乏味的… 任何人都可以给我一些帮助..? 谢谢!

如何从DLL生成一个导入库(LIB文件)?

是否有可能从一个DLL自动生成一个MSVC导入库(LIB文件)? 怎么样?

在WAMP / Apache的openssl.exe中找不到序数372

我使用的PHP框架需要OpenSSL的各种function,但是在执行任何与OpenSSL相关的任务时,出现以下错误:“无法在DLL文件C:\ wamp64 \ bin \ apache \ apache2.4.17 \ bin中find序号372 \ openssl.exe”。 我不知道该怎么改正这个问题,我已经到处看了。 我会很感激的帮助,因为我不知道如何解决这个问题。

有关在加载地址空间中加载DLL的问题

那么,我读了几个Matt Pietrek关于可移植可执行文件(PE)文件的文章,例如: 深入了解Win32可移植可执行文件格式, 第1 部分和第2部分 MSJ关于连接器的文章 MSJ关于COFF格式的文章 另外,我已经读了一些关于这个问题的其他资料。 这是要么我忽略了一些部分,或者这些问题没有在那里回答。 所以,这里是问题: 众所周知,在加载EXE时,Windows Loader会从Importa地址表(IAT)中读取导入的DLL列表,并将它们加载到进程地址空间中。 进程地址空间是一个虚拟空间。 该DLL可能已经加载到一些物理空间。 这发生在像KERNEL32.dll或USER32.dll这样的DLL上。 物理和虚拟地址之间的关系是什么? 加载器是只分配页面并复制DLL,还是它引用? 如果没有加载DLL,Loader是加载整个DLL,还是只加载所需的函数? 例如,如果您使用bar.dll函数foo() ,则加载器是否将整个bar.dll加载到进程地址空间中? 或者,它只是加载foo的代码到进程地址空间? 假设您的EXE文件使用驻留在%WINDIR%\system32\user32.dll USER32.DLL函数MessageBox() 。 你能开发一个自定义的USER32.DLL ,把它放在你的EXE文件所在的目录下,并且期望你的自定义的MessageBox被你的应用程序调用,而不是系统默认的MessageBox ?