Articles of DLL

OpenCVSharp:无法加载DLL“OpenCvSharpExtern”

我在我的项目中安装了最新的OpenCVSharp 2(2.4.10.201 …)和NuGetpipe理器。 关于OpenCVSharp.CvMat的一切工作正常(加载,操作等),所以我相信安装是正确的。 但是我根本无法使用OpenCVSharp.CPlusPlus! 问题是它不会加载OpenCvSharpExtern.dll。 从try-catch块显示错误: try { Mat mat = new Mat(); } catch (Exception err) { Console.WriteLine( err ); } System.TypeInitializationException: The type initializer for 'OpenCvSharp.CPlusPlus.Mat' threw an exception. —> System.DllNotFoundException: Unable to load DLL 'OpenCvSharpExtern': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at OpenCvSharp.CPlusPlus.NativeMethods.core_Mat_sizeof() at OpenCvSharp.CPlusPlus.Mat..cctor() — […]

获取崩溃后DLL地址的函数

我知道当应用程序崩溃时,系统报告它在mydll.dll中的位置0x00004b79处崩溃。 我有源代码,我有二进制文件,但是我没有PDB或从该DLL的生成的任何列表文件。 崩溃是可重复的,但我不能在生产计算机上安装debugging器,并且在开发或debugging环境中不会发生崩溃。 我已经成立了沃森博士,我有一个崩溃转储和沃森博士日志文件。 Dr.Watson日志文件包含正在执行的函数的反汇编: 10604b70 8b442408 mov eax,[esp+0x8] 10604b74 8b542404 mov edx,[esp+0x4] 10604b78 50 push eax FAULT ->10604b79 8b4120 mov eax,[ecx+0x20] ds:0023:00000020=???????? 10604b7c 52 push edx 10604b7d 6801800000 push 0x8001 10604b82 50 push eax 10604b83 ff156c946210 call dword ptr [mydll!DllUnregisterServer+0x1720c (1062946c)] 10604b89 c20800 ret 0x8 (INT 3指令先于上面的汇编代码片段并成功。) 堆栈跟踪只包含地址mydll + 0x4b79。 它不给任何来电者的信息。 在windbg中加载故障转储没有提供任何附加信息。 我怎样才能确定什么function(甚至更好,哪一行代码)的崩溃发生?

无法在Visual Studio 2015中打开源文件

我正在尝试使用Visual Studio Community 2015在windows中编译OBS studio 。我在Visual Studio中创build了一个项目,并通过将这些文件拖到解决scheme资源pipe理器中将整个git repo复制到项目中。 这个项目依赖于libav,x264和curl。 它们以.lib,.dll和头文件forms提供。 问题是我不断收到“无法打开源文件”。 我有一个单独的文件夹中的dll和lib的头文件(dll和lib在同一个文件夹中)。 在项目设置 – > VC ++目录下,我添加了include目录,并且还添加了库目录。 然后我在链接器 – >input – >附加依赖关系下特别添加了这个库。 然后我将包含.dll文件的目录添加到环境variablesPATH。 毕竟,我仍然得到同样的错误,以及一些其他的错误。 这是一个有问题的源文件的屏幕截图。 这些是我的设置。 对于这条路,我曾尝试过和没有尾随的正斜杠。

如何从HTML5中使用本地代码(Windows)

我是相当新的HTML5,我正在寻找关于从HTML5应用程序访问本机代码的文档和示例。 基本上,我有一个编译DLL ,需要通过HTML5代码访问。

LoadLibrary()的相对地址为dll

我想在我的代码在Windows中加载DLL,我用LoadLibrary()函数成功加载我的DLL,但我有一个问题,我给我的DLL的path如: LoadLibrary(C:\\path\\to\\my\\dll); 我不知道是否可以给我的DLL的相对path。 我的意思是例如: LoadLibrary(.\my dll directory\my dll.dll) 可能吗? 如果没有,我怎样才能开发我的项目,它可以是便携式的,而不改变在不同的机器上的DLL的path?

在Windows下创build64位jni

同时移植工具到不同的系统我遇到一个问题与Windows 64位。 我已经用linux 32/64和windows32成功构build了dll。 我已经用msys尝试过mingw-64,但不幸的是我只能得到32位的dll。 这是我的脚本获取DLL的一部分 gcc -o tool_jni.dll -static-libgcc -static-libstdc ++ -Wl,-add -stdcall -alias -shared -IC:/java/jdk/include -IC:/java/jdk/include/win32 $ SOURCES 我得到没有错误消息,只是不是所需的DLL 我对任何解决scheme都是开放的。 我不必使用脚本,我只需要DLL。

使用JNI的Java VM EXCEPTION_ACCESS_VIOLATION?

如果有人可以帮我解决我的问题。 当我尝试通过使用API​​ jni来运行DLL中的函数时,JMV会产生这样的怀疑: # # An unexpected error has been detected by Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000077503290, pid=4796, tid=5348 # # Java VM: Java HotSpot(TM) 64-Bit Server VM (10.0-b19 mixed mode windows-amd64) # Problematic frame: # C [ntdll.dll+0x53290] # # An error report file with more information is saved as: # […]

获取当前可执行文件目录在testing用具下失败

我的应用程序使用LoadLibrary , GetProcAddress和FreeLibrary实现了一个sorting的插件体系结构。 由于我的所有dll都与可执行文件位于同一个目录,所以当我查找一个dll的时候,我得到了可执行文件的目录并使用这个函数在那里search: string FileSystem::GetPathToProgramDirectory(){ char progname[MAX_PATH]; GetModuleFileNameA( NULL, progname, MAX_PATH ); PathRemoveFileSpecA( progname ); return string( progname ); } 这对生产有效,但是当我尝试在使用NUnit的集成testing下运行时,可执行目录最终变成了NUnit,所以加载失败。 请记住,这是非托pipe的C ++; 在托pipe的C + +我解决了这个使用Path::GetDirectoryName(Assembly::GetExecutingAssembly()->Location) ,在这两种情况下工作,但非托pipe案件让我难住。 有没有一个非托pipe的Winapi等价物?

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()呢?

Visual C ++ – 重写从DLL导入的函数?

我想覆盖kernel32.dll中的特定function。 是否有可能在静态库中重新定义该函数,并强制执行该静态库中的可执行文件? 我想不同的联系可能会成为一个问题。 这将是可以用我自己的自定义DLL覆盖它。 然而,问题是DLL本身需要链接到kernel32.dll,所以它忽略了我对该函数的定义。 编辑:我得到它与我自己的DLL工作。 在构build时,链接时间码生成需要被禁用。 那么静态链接重写的函数呢?