我一直在寻找一种方法来获取映射到一个DLL中的函数名称的所有string。 我的意思是所有可以调用GetProcAddress的string。 如果你做一个DLL的hex转储的符号(string)在那里,但我想那里必须我一个系统调用来获取这些名称。
两个问题: 1)不包含在ILMerged程序集中的基本.NET程序集 从.NET 3.5 / Visual Studio 2008升级到.NET 4 / Visual Studio 2010后,我在使用ILMerge进行后构build时遇到了问题。我有一个解决scheme,其中有几个项目的目标框架设置为“.NET Framework 4” 。 我使用下面的ILMerge命令将单个项目DLL合并到单个DLL中: if not $(ConfigurationName) == Debug if exist "C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" "C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" /lib:"C:\Windows\Microsoft.NET\Framework64\v4.0.30319" /lib:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies" /keyfile:"$(SolutionDir)$(SolutionName).snk" /targetplatform:v4 /out:"$(SolutionDir)bin\development\$(SolutionName).dll" "$(SolutionDir)Connection\$(OutDir)Connection.dll" …other project DLLs… /xmldocs 如果我没有指定.NET 4框架目录的位置,则会从ILMerge中得到“未parsing的程序集引用不允许:系统”错误。 如果我没有指定MSTest目录的位置,我得到“未parsing的程序集引用不允许:Microsoft.VisualStudio.QualityTools.UnitTestFramework”错误。 上面的ILMerge命令工作并产生一个DLL。 但是,当我在另一个.NET 4 C#项目中引用该DLL并尝试使用其中的代码时,出现以下警告: 主要引用“MyILMergedDLL”无法parsing,因为它具有.NET Framework程序集“mscorlib,Version = […]
我正在尝试安装PHP(5.5)。 我提取了C:\php文件夹中的zip文件。 而且我还将“path”系统variables设置为C:\php 。 但是,当我打开命令提示符并键入php我得到错误说: 程序无法启动,因为您的计算机缺lessMSVCR110.dll。 尝试重新安装程序来解决这个问题。 我在C:\Windows\System32目录中检查了这个DLL,我可以find那里的文件。 如何摆脱这个错误? 任何帮助,将不胜感激。 提前致谢。
我试图导出类包含对象,如std :: vectors和std :: strings的类 – 整个类声明为DLL导出通过: class DLL_EXPORT FontManager { 问题是,对于复杂types的成员,我得到这个警告: 警告C4251:'FontManager :: m__fonts':class'std :: map <_Kty,_Ty>'需要使用types为'FontManager'的客户端的dll接口,其中[_Kty = std :: string,_Ty = tFontInfoRef ] 我可以删除一些警告,即使我不改变成员variables本身的types,在他们之前放置下面的转发类声明: template class DLL_EXPORT std::allocator<tCharGlyphProviderRef>; template class DLL_EXPORT std::vector<tCharGlyphProviderRef,std::allocator<tCharGlyphProviderRef> >; std::vector<tCharGlyphProviderRef> m_glyphProviders; 看起来像前向声明“注入”DLL_EXPORT当成员编译,但它是安全的? 当客户端编译这个头文件并在他身边使用std容器时,是否真的改变了什么? 它会使所有将来使用这种容器DLL_EXPORT(也可能不内联?)? 它真的解决了警告试图警告的问题吗? 这是警告什么,我应该担心,还是最好在这些构造的范围内禁用它? 客户端和DLL将始终使用相同的库和编译器集,而这些是仅标头的类… 我正在使用Visual Studio 2003与标准的STD库。 —-更新—- 我想更多的针对你,因为我看到的答案是一般的,在这里我们谈论的是标准容器和types(如std :: string) – 也许问题是: 我们可以通过相同的库头来禁用标准容器和types对客户端和dll可用的警告,并像对待int或任何其他内置types一样对待它们吗? (这似乎在我身边正常工作。)如果是这样,应该是我们可以做到这一点的条件? 或者应该禁止使用这样的容器,或者至less要非常小心地确保没有赋值运算符,拷贝构造函数等等会被内联到dll客户端中? […]
我目前正在用C#编写一个库,并在某些场合使用PowerShell来快速testing它。 但是,这阻止了我重新构build项目,因为PowerShell显然仍然会打开DLL。 Add-Type后,有没有办法再次卸载DLL? 文档似乎没有线索,明显的候选人将是Remove-Type (这不存在 – 只有一个命令无论如何与Type作为它的名词)。 closuresPowerShell并执行导航到构build目录的所有内容,并在每次重新构build时重新添加types都变得非常麻烦。
我有一个MVC4 Web api项目。 当运行服务项目时,我得到一个错误 无法加载文件或程序集“WebGrease,Version = 1.5.1.25624,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其某个依赖项。 该系统找不到指定的文件。 我已经添加了WebGrease.dll文件,并仍然出现错误 并尝试改变web.config <bindingRedirect oldVersion="0.0.0.0-1.3.0.0"/>" 和 <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> 请咨询我缺less的东西。
我正在写一个适用于excel文件的应用程序。 我需要一个function来删除工作表。 我必须使用程序集Microsoft.Office.Interop.Excel.dll。 它在开发人员机器上运行良好,但是当我尝试将其部署在服务器上时,出现错误: 无法加载文件或程序集“Office,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c”或其某个依赖关系 我明白,当一台机器上没有安装MS Office时会出现这个问题。 客户不想以任何代价在服务器上安装和购买MS Office。 我在开发者机器上安装了“Redistributable Primary Interop Assemblies”,build议在这里: http : //forums.asp.net/t/1530230.aspx/1并重新编译我的项目。 代码示例: public bool DeleteSheet(string tableName) { Excel.Application app = null; Excel.Workbooks wbks = null; Excel._Workbook _wbk = null; Excel.Sheets shs = null; bool found = false; try { app = new Excel.Application(); app.Visible […]
什么是静态库的.lib文件,静态链接的dynamic库和dynamic链接的dynamic库? 如何在dynamic链接的dynamic库中不需要.lib文件,而且在静态链接中,.lib文件不过是包含所有方法的.obj文件。 那是对的吗?
微软的C ++编译器和链接器似乎与mspdb100.dll有一个奇怪的关系。 当从IDE运行时,编译器和链接器当然可以正常工作。 从命令行运行任何一个时,我得到一个错误。 没问题,我find了DLL并将其复制到目录中。 现在编译器工作正常,但链接器死亡。 我可以通过在PATH中添加“%VS10%\ Common7 \ IDE”来解决这个问题,但是由于各种原因(性能,系统纯度,OCD等等),我不想这么做。 为什么这个设置如此敏感,还有什么我可以做的解决呢?
我明白我需要使用LoadLibrary()。 但是,为了使用第三方DLL文件,还需要执行哪些其他步骤? 我只是跳到C ++,这是我没有得到的唯一部分(作为Java程序员)。 我正在研究如何使用Qt库和tesseract-ocr,但是这个过程对我来说没有任何意义,而且对于google来说非常困难。 如何告诉编译器我正在使用的函数? 是否应该有来自第三方供应商的包含文件?