Questions tagged «dll»

动态链接库(DLL)是一个模块,其中包含可以由另一个模块(应用程序或DLL)使用的功能和数据。这是Microsoft在Microsoft Windows和OS / 2操作系统中对共享库概念的实现。

3
在Windows上是__cdecl还是__stdcall?
我目前正在为Windows开发一个C ++库,该库将作为DLL分发。我的目标是最大程度地实现二进制互操作性。更确切地说,我的DLL中的功能必须可以从使用多个版本的MSVC ++和MinGW编译的代码中使用,而不必重新编译DLL。但是,我对哪种调用约定最好cdecl还是感到困惑stdcall。 有时我听到诸如“ C调用约定是唯一保证在整个编译器中都相同的声明”之类的语句,这与诸如“的解释存在某些变化cdecl,尤其是如何返回值”之类的语句形成对比。这似乎并未阻止某些库开发人员(如libsndfile)在其分发的DLL中使用C调用约定,而没有任何可见的问题。 另一方面,stdcall调用约定似乎定义明确。据我了解,基本上所有Windows编译器都必须遵循它,因为它是Win32和COM的约定。这是基于这样的假设:没有Win32 / COM支持的Windows编译器将不是很有用。论坛上发布的许多代码片段都声明了函数的功能,stdcall但我似乎找不到一个明确解释原因的帖子。 那里有太多相互矛盾的信息,我进行的每次搜索都会给我不同的答案,但这并不能真正帮助我在两者之间做出决定。我正在寻找一个清晰,详细,有争议的解释,以说明为什么我应该选择一个而不是另一个(或者为什么两者相等)。 请注意,这个问题不仅适用于“经典”的功能,而且还虚成员函数调用,因为大多数客户端代码将与我的DLL通过“接口”,纯虚类接口(以下模式,例如描述在这里和那里)。


3
在同一解决方案中引用2个不同版本的log4net
我正在使用引用log4net 1.2.10.0的NHibernate 2.1.2.400。在同一项目中,我还使用了简单的记账SDK,可悲的是它仍在使用log4net 1.2.9.0。 因此,如果我引用log4net 1.2.10.0,但我可以使NHibernate正常工作,但是simpleSDK无法正常工作。反之亦然... 我猜大多数问题都来自log4net更改了其组装密钥这一事实。我尝试使用绑定重定向没有成功:2个DLL没有相同的密钥。 我正在考虑重新编译NHibernate以使用log4net 1.2.9.0,但似乎做错了,我的感觉是,Simply Accounting不会很快更新其SDK以使用log4net 1.2.10.0。 处理此问题的最佳方法是什么?有可能解决吗?
80 .net  nhibernate  dll  log4net 

4
与依赖项链接动态库
请考虑以下情形: 共享库libA.so,没有依赖项。 共享库libB.so,依赖项为libA.so。 我想编译一个与libB链接的二进制文件。我应该仅将二进制文件与libB链接,还是与libA链接? 有什么方法只能与直接依赖项链接,从而使依赖项中的未解析符号解析为运行时吗? 我担心库libB的实现将来可能会改变,引入了其他依赖项(例如libC,libD,libE)。我会遇到问题吗? 换一种说法: libA文件:a.cpp啊 libB文件:b.cpp bh 主程序文件:main.cpp 当然,b.cpp包含ah,main.cpp包含bh 编译命令: g++ -fPIC a.cpp -c g++ -shared -o libA.so a.o g++ -fPIC b.cpp -c -I. g++ -shared -o libB.so b.o -L. -lA 我应该使用哪个波纹管选项? g++ main.cpp -o main -I. -L. -lB 要么 g++ main.cpp -o main -I. -L. -lB …
79 gcc  dll  dependencies  g++ 

10
编译错误:两个DLL中都存在类型'ASP.global_asax'
我刚刚将另一个项目页面及其dll集成到我现有项目的Bin /文件夹中。我的项目框架是3.5。当我尝试构建项目或解决方案时,会引发以下错误: “类型'ASP.global_asax'既存在于'c:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ timesheet \ 15a75c54 \ 898b48b9 \ assembly \ dl3 \ 58b062b2 \ 00ceda54_c98cc801 \ App_global.asax .DLL'和'c:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ timesheet \ 15a75c54 \ 898b48b9 \ App_global.asax.q_h6dbfx.dll'c:\ …
78 c#  asp.net  .net  dll 

7
如何使我的托管NuGet软件包支持C ++ / CLI项目?
我制作了一个NuGet软件包,当从C#项目中使用它时,它可以很好地工作。它在lib/net40目录中包含一个DLL ,并且该DLL被添加为参考。 现在,NuGet支持C ++,如何实际修改程序包,以便可以将DLL作为托管引用添加到C ++ / CLI项目中?我找不到任何解释此问题的教程。如果尝试按原样添加软件包,则会出现以下错误: 您正在尝试将此软件包安装到以“ Native,Version = v0.0”为目标的项目中,但是该软件包不包含任何与该框架兼容的程序集引用或内容文件。 有人会认为解决方案是将文件放在lib / native下,但是根据http://docs.nuget.org/docs/reference/support-for-native-projects,这是不受支持的。另外,将DLL直接放在lib下似乎也无能为力。 显然,我应该使用build / native下的.props或.targets文件来执行此操作,但是要使该文件有效,我需要将哪些文件放入文件中?

6
如何在Visual Studio C ++中使用第三方DLL文件?
我了解我需要使用LoadLibrary()。但是,要使用第三方DLL文件,我还需要采取什么其他步骤? 我只是跳入C ++,这是我唯一不了解的部分(作为Java程序员)。我只是在研究如何使用Qt库和tesseract-ocr,但是该过程对我来说毫无意义,并且很难谷歌搜索。 如何告诉编译器我正在使用的功能?是否应该有第三方供应商提供的包含文件?

4
Dependency Walker:缺少dll
我一直在尝试使用Dependency Walker解决可执行文件的.dll依赖关系。当前,我越来越缺少以下形式的.dll: API-MS-WIN -XXX EXT-MS-WIN -XXX 例如: API-MS-WIN-APPMODEL-IDENTITY-L1-2-0.DLL API-MS-WIN-APPMODEL-RUNTIME-INTERNAL-L1-1-0.DLL API-MS-WIN-BASE-UTIL-L1-1-0.DLL API-MS-WIN-CORE-APIQUERY-L1-1-0.DLL EXT-MS-WIN-RTCORE-NTUSER-SYSCOLORS-L1-1-0.DLL 是否有人对如何解决这些问题有任何想法?任何帮助将不胜感激! 附加信息:我使用Visual Studio 2013编译了可执行文件。最有趣的是,编译期间我没有收到任何错误。但是,由于缺少依赖项,我无法运行它。我还附上了依赖行者的屏幕截图: 更新1:为了解决该问题,我尝试将VS在编译过程中使用的库的路径添加到$ PATH环境变量中,但没有任何运气(Dependency Walker仍然显示未解决的依赖关系)。


4
如何在Visual C ++中构建导入库(.lib)和DLL?
我想要一个构建DLL文件和导入库(.lib)文件的Visual Studio项目。(导入库是静态链接的库,负责在使用该DLL文件的其他项目中加载该DLL文件)。 因此,我去了Visual Studio C ++ 2008 Express Edition,创建了类库类型的新项目,并将“配置类型”设置为“ Dyanamic库(.dll)”。 但是,当我构建解决方案时,我看到的唯一相关的输出文件是DLL文件。我看不到生成任何LIB文件。我查看了项目目录和所有子目录(发布和调试)。 我相信可以同时构建LIB和DLL文件,因为在MSDN上显示“链接程序在DLL生成时会创建导入库”。 另外,该网站的另一个用户正在使用Visual C ++同时创建LIB和DLL文件。 那我该怎么办呢?

4
如何在未安装MS Office的计算机上使用Microsoft.Office.Interop.Excel?
我正在编写一个适用于excel文件的应用程序。我需要删除一张纸的功能。我必须使用程序集Microsoft.Office.Interop.Excel.dll。 它在开发人员机器上运行良好,但是当我尝试在服务器上部署它时,出现错误: 无法加载文件或程序集“办公室,版本= 14.0.0.0,文化=中性,PublicKeyToken = 71e9bce111e9429c”或其依赖项之一 我了解在计算机上未安装MS Office时会发生此问题。客户不想以任何价格在服务器上安装和购买MS Office。 我按照此处的建议在开发人员计算机上安装了“可重新分配的主互操作程序集”: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 = false; app.DisplayAlerts = …
74 c#  excel  dll  interop 

7
如何以编程方式获取DLL或EXE文件的版本?
我需要使用C或C ++中的Win32本机API获取DLL或EXE文件的产品版本和文件版本。我不是在寻找Windows版本,而是在DLL文件上单击鼠标右键,选择“属性”,然后查看“详细信息”选项卡所看到的版本号。这通常是一个四部分的虚线版本号xxxx
74 c++  winapi  dll  version  exe 

1
.exp的用途是什么,.lib和.dll有什么区别?
在编译和链接期间,.exp的用途是什么?.lib和.dll有什么区别?我知道将使用.lib,而运行程序时将使用链接和.dll。但是.lib和.dll到底有什么区别? .lib文件是否不包含来自.dll文件的功能代码?使用两个单独的文件有什么需要? 请说清楚。

6
使用C#代码中的C ++ dll中定义的类
我有一个用C ++编写的dll,我需要在我的C#代码中使用此dll。搜索之后,我发现使用P / Invoke可以访问所需的函数,但是这些函数是在类中定义的,并且使用非静态私有成员变量。因此,我需要能够创建此类的实例以正确使用这些功能。如何获得对此类的访问权限,以便可以创建实例?我一直无法找到一种方法来做到这一点。 我想我应该注意,C ++ dll不是我的代码。
73 c#  c++  dll  pinvoke 

2
如何制作包含DLL文件的JAR文件?
我购买了一个第三方Java库,其中包括一个JAR文件和两个DLL文件。我编写了自己的Java程序,该程序调用了第三方JAR文件。现在,我的问题是如何将我的所有代码打包到一个包含所有代码以及第三方JAR和DLL的JAR文件中? 我知道SWT就是这种情况。在swt.jar包括DLL文件,但我不知道如何做到这一点,以及如何使其正常工作。
72 java  dll  jar  swt  packaging 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.