Articles of DLL

无法在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时,链接时间码生成需要被禁用。 那么静态链接重写的函数呢?

代理DLL中无法parsing的外部符号

我正在尝试构build“Version.dll”的代理DLL,但仍然遇到与导出的函数有关的错误。 00000000 characteristics 4A5BC9E3 time date stamp Tue Jul 14 05:27:23 2009 0.00 version 1 ordinal base 15 number of functions 15 number of names ordinal hint RVA name 1 0 00001B14 GetFileVersionInfoA 2 1 00001E40 GetFileVersionInfoByHandle 3 2 0000193C GetFileVersionInfoExW 4 3 00001AB4 GetFileVersionInfoSizeA 5 4 000014E8 GetFileVersionInfoSizeExW 6 5 000015FC GetFileVersionInfoSizeW 7 6 […]

无法在DLL中查找过程

为什么不能在dll中find指定的程序? 我有一个为Windows x86编译的my.dll库(操作系统是Windows 7 x64;但是我使用的是Go x86二进制文件 – LiteIDE – 而C#代码也是针对x86体系结构进行了显式编译的)。 我从C#使用它,它的工作原理: [DllImport("my.dll", EntryPoint = "my_function")] public static extern double my_function(double x); 但是,当我尝试使用它(在这里我试图find它)​​从通过: var ( dllMine = syscall.NewLazyDLL("my.dll") my_function = dllMine.NewProc("my_function") ) func main() { err := my_function.Find() if err != nil { fmt.Println(err) return } //… } 它说Failed to find my_function procedure in my.dll: The […]