我有一个视频播放器应用程序正在使用的DLL文件,该视频播放器使用该DLL文件将视频导出为AVI文件格式,如何知道该应用程序如何使用DLL文件以便我可以在外部执行吗?我在Dropbox上有一份文件拷贝. 最佳答案 正如Raymond所说,没有正式的方法来检查DLL支持的接口(interface)。充其量你有这些选择:键入dumpbin/exportslkExport.dll以查看导出的函数。您不会看到函数签名或返回类型,但您可能会认出它是您的特定应用程序的一些众所周知的插件接口(interface)标准。也许媒体播放器应用程序本身有一
我觉得很蠢,但是我看不懂,例如,我想使用WindowsAPI,如GetWindowsDirectory、GetSystemInfo等...我可以直接使用Api或通过GetProcAddress调用:方法一在这里,我可以使用LoadLibrary和GetProcAddress调用API:#includetypedefUINT(WINAPI*GET_WIN_DIR)(LPWSTRlpBuffer,UINTsize);TCHARinfoBuffer[MAX_PATH+1];HINSTANSEdllLoad=LoadLibrary("Kernel32.dll");GET_WIN_DIRfunc
我有一个dll“mytest.dll”,当通过LoadLibrary()加载时,返回NULL(并且127作为GetLastError())。如果我在“mytest.dll”上使用DependencyWalker,它会报告它应该正确加载并且正确找到所有DLL。在主机exe上运行DependencyWalker的探查器选项会在日志中显示以下相关部分:00:00:55.099:Loaded"mytest.DLL"ataddress0x07860000bythread0xBBC.Successfullyhookedmodule.00:00:55.115:Firstchanceexception
我在2个不同的dll中有2个static对象:对象Resources(这是一个单例)和对象User。其析构函数中的对象用户必须访问对象资源。如何强制对象资源不在对象用户之前被销毁? 最佳答案 如果您能够将这2个全局变量放在同一个DLL中,那就不是同一个故事了。正如Jem在自己的回复中所说,系统不保证DLL分离顺序。因此,当有2个分离的Dll时,您可能会遇到大问题。我不是Windows系统大师,但通过谷歌查看,我发现msdn博主告诉他们有同样的问题,但没有好的解决方案来解决它。我可以将它们放在同一个DLL中,根据我的说法,解决方案更简
请建议我在VC++项目中使用.NETdll的最佳方法。 最佳答案 使其可见。参见linktext 关于c#-我们如何在VC++中使用.NETdll?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1802929/
假设您想编写一个程序来测试c++dll文件中的函数。您应该允许用户选择一个dll(我们假设我们正在谈论c++dll)。他应该能够获得dll导出的所有函数的列表。然后,用户应该能够从列表中选择一个函数名称,手动输入参数列表(参数都是基本类型,如int、double、bool或char数组(例如c类型字符串))并尝试使用指定的参数运行选定的函数。他想知道函数是否使用指定的参数运行,或者它们是否会导致它崩溃(例如因为它们与签名不匹配)。主要问题是C++作为一种强类型语言,要求您在编译时知道函数调用的参数的数量和类型。在我的例子中,我根本不知道这些参数是什么,直到用户在运行时选择它们。我想到的
使用以下语法从C#应用程序调用以C++编写的.dll会增加多长时间的典型开销?[DllImport("abc.dll",EntryPoint="xcFoo",CallingConvention=CallingConvention.Cdecl)]publicexternstaticResultFoo(outIntPtrsession,[MarshalAs(UnmanagedType.FunctionPtr)]ObjectCallbackcallback,UInt64turnKey,stringserverAddress,stringuserId,stringpassword);有没有更有
有没有办法在不使用COM的情况下从c++非托管应用程序调用c#dll? 最佳答案 您可以使用ReverseP/Invoke来做到这一点-示例和讨论here. 关于c#-在没有COM的情况下从非托管C++应用程序调用C#dll,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4465639/
我最初在win732bits上用VC9.0设计了一个win32应用程序。我最近升级到win764位,并尝试构建+执行以前的应用程序。构建运行良好(win32应用程序),但在运行时出现错误“[...]已退出,代码为-1073741701(0xc000007b)。”我猜这是加载64位版本的[预期]32位dll的结果。这个项目的具体依赖是:文件库SDL主程序库SDL_ttf.libopengl32.libglu32.libwininet.libSDL和SDL_ttf仅在32位版本中。我假设VisualStudio足够聪明,可以在我请求win32应用程序时获取\syswow64中的opengl
我阅读了一些文档,其中提供了与C兼容的函数的简单示例。__declspec(dllexport)MyFunction();我对此很满意。我写了一个小应用程序使用这个dll的功能。我使用了显式链接LoadLibrary()函数。C风格的函数可以毫无问题地工作。但是当我把我的课写成namespaceDllTest{classTest{public:__declspec(dllexport)Test();__declspec(dllexport)voidFunction(int);__declspec(dllexport)intgetBar(void);private:intbar;};}#