- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我知道有一个工具叫 Dll to lib,但开发人员要价 1000 美元。
我只需要转换一个库,一次,所以不容易证明这个价格是合理的。
我试过 IMPLIB32.EXE,但我只得到空的 .lib 文件。
我怎样才能做到这一点?
也许我可以编写一个简单的转换应用程序?
添加1:
Dll 通常是 stdcall 而不是 cdecl 并且是用较旧的 C 语言编写的,例如不是 C# 或 .NET 或 C++ 的语言。我现在需要从 C++ 应用程序中调用它们。一个例子是 SQLite.dll 或 zlib.dll。
我无权访问这些 dll 的 .lib 文件。
补充2:
我为 VS2008 重新编写了这段代码
http://floodyberry.wordpress.com/2008/09/08/generating-dll-wrappers/
并包括可在此处下载的示例 Dll 等:
http://www.transferbigfiles.com/Get.aspx?id=7d86fa0b-6ddc-4f6f-8d31-2c20824aae9a
这反过来又创建了一个创建 Dll 的项目。当我尝试编译 Dll 时,出现链接器错误:
AddShow.dll:致命错误 LNK1107:无效或损坏的文件:无法在 0x300 读取
这里描述:
http://list.isis.vanderbilt.edu/pipermail/udm-users/2006-March/000664.html
不知道如何继续。那么近又那么远
接下来我们转到这个方法
http://www.coderetard.com/2009/01/21/generate-a-lib-from-a-dll-with-visual-studio/
使用参数/exports C:\path\to\AddShow.dll 运行 dumpbin
什么都不做
经过一番研究
http://msdn.microsoft.com/en-us/library/aa446532.aspx
似乎需要从 common/ide 文件夹中获取 mspdb71.dll(现在是 mspdb80.dll)
dumpbin.exe 现在运行时出现错误:
致命错误 LNK1106:无效文件或磁盘已满:无法寻找 0x6179A
这些线程表明 dumpbin.exe 的版本可能是问题所在
我有 Microsoft (R) COFF/PE Dumper 版本 9.00.30729.01
所以我试过了
Microsoft (R) COFF 二进制文件转储程序版本 5.12.8078
没有成功。
经过大量阅读后,我不再靠近
http://support.microsoft.com/kb/815645
http://support.microsoft.com/kb/839286
http://markmail.org/message/p5vwzyfyv3bs6z34
http://fixunix.com/programmer/94825-fatal-error-lnk1106-invalid-file-disk-full.html
当我运行 ProcMon 时,当 svchost.exe 尝试打开它时,我看到第一次出现 queryopen 和 sqlite3.dll,但失败并显示错误 PATH NOT FOUND。路径是 C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\SQLITE3.DLL 并且是正确的。如果我将它放在 C 驱动器的根目录,那么我会收到 NAME NOT FOUND 错误:
C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\link.exe.Local
C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\dumpbin.exe.Local
分别来自 link.exe 和 dumpbin.exe。我使用的是 XPSP3 而不是 Vista,这是我对 sysinternals 知识的限制。这些 .local 文件是什么?
(csrss.exe 也无法找到一些 list 文件。)
所以还没有成功,只是更加神秘
添加 3:
我尝试从其安装位置\Program Files\Microsoft Visual Studio 8\VC\bin 运行 dumpbin.exe,但操作系统表示找不到 mspdb80.dll。我从\Program Files\Microsoft Visual Studio 8\Common7\IDE 复制了 mspdb80.dll 以尝试运行 dumpbin.exe。
现在我得到错误:
“c1902 程序数据库管理器不匹配请检查您的安装”
如果我从\Program Files\Microsoft Visual Studio 8\VC\bin 中删除 mspdb80.dll,错误就会消失!但我无法运行 dumpbin.exe。
添加4:
我终于能够通过将以下文件复制到一个文件夹来运行 dumpbin:
转储文件
链接文件
库文件
mspdb80.dll
我确实得到了错误:
致命错误 LNK1248:图像大小 (FFFFFXXX) 超过最大允许大小
(80000000)
一次,但更换 dll 解决了这个问题。估计是坏了?
然后我进入了说明中的下一步:
http://www.coderetard.com/2009/01/21/generate-a-lib-from-a-dll-with-visual-studio/
http://support.microsoft.com/kb/131313
并得到错误:
目标平台不支持警告 lnk4017 语句被忽略
事实证明这是因为我指定了 .dll 而不是 .def 文件。
然后将生成的 .Lib 和 .exp 文件添加到 VS2008 项目并编译和运行。然后调试器报错:
运行时检查失败 #0 - ESP 的值未在函数调用中正确保存...
正如这里提到的
"Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call" after successful C# callback from the C++ code of GameSpy lib
这是因为我在我的 dll 中使用了 stdcall 并在我的应用程序中声明了 __cdecl。
extern "C" { // put Dll C function prototypes here
int __cdecl AddTwoNum(int n, double f); // __stdcall
}
最佳答案
我似乎无法评论他的回答(我需要更多声誉?),但您可以尝试使用我的 .dll wrapper generator创建 stub .dll iain 建议。
关于c++ - 将 Windows Dll 转换为 C++ Visual Studio 2008 的 .lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1536557/
我经常使用 SSMS 查询数据和构建数据集,我的 IT 部门负责数据库管理。 最近我发现了 Azure Data Studio,我喜欢: 智能感知 源代码控制(例如使用 Git) 来自社区的扩展 SQ
我想根据我使用的 visual studio 版本编译不同的东西,比如 #if VISUAL_STUDIO_VERSION > 2015 eventH?.Invoke(this, EventArgs.
我们的开发团队计划从 visual studio 2005 升级到 visual studio 2010 -- 跳过 visual studio 2008。 大部分项目是VB ASP.NET项目,使用
我的Visual Studio 2015无法构建2010平台工具集。它说: The build tools for Visual Studio 2010 (v100) cannot be found.
我目前正在使用 Visual Studio 2015 来编程 ASP.NET Core 应用程序。我对安装 Visual Studio 2017 有以下疑问: 什么被认为是最佳实践和/或最干净的方法?
尝试从扩展和更新获取 Visual Studio 扩展时,出现以下错误:- 向 visualstudiogallery.msdn.microsoft.com/Services/VStudio/Exte
这个问题在这里已经有了答案: Can Visual Studio Code and VS 2012 be installed on same computer? (1 个回答) 关闭去年。 在安装了
作为标准安装的一部分,Visual Studio Code 带有一个名为“Monokai Dimmed”的颜色主题。 有没有办法将它移植到 Visual Studio 2015?我检查了社区主题( h
我想开始编程 CUDA。 我已经安装了 Visual Studio 2010 Express。 我还安装了 nVidia nSight Visual Studio。 而且我具备所有常见的先决条件(Ne
Visual Studio Community Edition是否可以使用Visual Studio Online帐户上的存储库? 我一直为包含在Online帐户中的Visual Studio Onl
我有一个我一直在开发的应用程序,但在 android studio 上遇到了问题。当我点击“build->run”然后选择我的设备时,应用程序永远不会在我的手机上运行(并且自动出现的android-s
我正在使用Visual Studio2010。我面临的一个问题是,当我创建一个新的Web项目时,Visual Studio将创建该项目,并且不会在解决方案资源管理器中显示其解决方案。 另一件事是,我想
我通读了这里的许多帖子,却找不到一个有效的明确答案。因此,在花了一些时间使它生效之后,我认为应该发布它。 问题:发布配置文件将建立在服务器上,但不会发布。 解: 确保已安装Microsoft Wind
我正在尝试使用Visual Studio 2012构建针对.NET 3.5的C++ CLI应用程序。 通过安装Visual Studio 2008,并指定v90平台工具集,我已经在一台机器上进行了这项
我在 Microsoft Visual Studios 2013 中有一个项目,我想在 Microsoft Visual Studios 2010 中打开它。有什么简单的方法吗?还是我必须在2010年
我想知道,如果我发送一个解决方案文件夹(它是用 visual studio C# 编写的),您可以在 visual studio for mac 中打开解决方案吗? 在visual studio 20
有没有办法在 Visual Studio Code 和 Visual Studio 中设置相同的快捷方式(而不必每次都手动更改它们)? 例如,我在 Visual Studio Code 中经常使用 A
我刚开始了解 Visual Studio Code。我想知道,我可以将 Visual Studio 替换为所有 .NET 开发相关的工作吗? 我可以节省 Visual Studio 许可的成本吗? V
我安装了具有有效许可证(Visual Studio 订阅)的 Visual Studio 2019 企业版(VS 2019 16.1.4),它运行良好。 突然之间,当我尝试打开项目或项目中的任何文件时
我一直在使用 Compass 编译 Windows 环境中的 sass 文件,无论是在命令行上还是使用 Compass-app 来查看目录。 我刚刚开始使用 Visual Studio(专业版 201
我是一名优秀的程序员,十分优秀!