首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何静态链接.DLL?

如何静态链接.DLL?
EN

Stack Overflow用户
提问于 2009-01-08 12:03:22
回答 4查看 42.2K关注 0票数 27

我们有一个由VS构建的(纯原生C++) .DLL。作为客户端,我们有一些原生C++应用程序和一个.Net-Wrapper围绕着这个用C++/CLI编写的DLL。最后,还有一些用C#编写的.Net-Wrapper客户端应用程序。

我的问题是,native.dll必须以一种与.Net世界不同的方式分发,并且VS不会跟踪那个DLL。因此,为了让我的所有C#应用程序正常工作,我必须将其复制到每个可执行目录中,或者将其放在%PATH%中的某个位置(在开发人员计算机上,我会避免这样做,因为他们可能希望使用不同版本的DLL启动不同的应用程序)。如果存在引用包装器DLL的UserControls,则会出现更大的问题:您必须将DLL复制到VS的目录,或者再次复制到%PATH%。但最糟糕的情况发生在我们的翻译器工具上。此工具跟踪.Net-Assemblies,并将其打包到可发送给外部翻译器的翻译器包中。据我所知,没有办法将原生.DLL放入那个包中!

因此,我计划将本机DLL静态链接到.Net-Wrapper中,这将解决我的问题。但是对于我们的本机应用程序,这个本机DLL必须仍然是一个DLL。

所以我有两个选择:

  • 创建了两个项目(一个生成静态库;另一个创建动态=>,我尽量避免这种情况)
  • 找到了一种链接DLL的解决方案,以便让VS从一个项目

生成两个输出

EN

回答 4

Stack Overflow用户

发布于 2009-11-05 04:13:57

在DLL的C++项目文件中,创建两个配置,一个生成dll,另一个生成.lib。不需要两个项目,因为任何.NET/C++项目都可以支持多个构建配置(这就是发布版本和调试版本不同的构建方式)。

票数 7
EN

Stack Overflow用户

发布于 2009-01-10 23:16:39

另一种选择是有两个项目,一个项目将输出一个可以静态链接的.lib,另一个项目将输出一个.dll并将您的.lib作为依赖项,您应该将.def添加到您的.dll中,其中包含您计划导出的符号,否则它将为空。

票数 6
EN

Stack Overflow用户

发布于 2009-01-08 12:11:49

拿起一份DLL to Lib (编辑:如果你找不到更便宜的选择)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/424032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档