标签: dll

什么是静态库的内部.lib文件,静态链接的动态库和动态链接的动态库?

什么是静态库的.lib文件,静态链接的动态库和动态链接的动态库?

为什么在动态链接的动态库中不需要.lib文件,而且在静态链接中,.lib文件只是一个包含所有方法的.obj文件.那是对的吗?

c++ dll linker static-libraries

75
推荐指数
4
解决办法
6万
查看次数

如何找出可执行文件将加载哪些dll?

如果我有一个Windows可执行文件,我如何找出它将加载哪些dll?

我只是在讨论哪些是静态加载的,而不是像LoadLibrary那样动态加载的那些.

dll executable

72
推荐指数
5
解决办法
9万
查看次数

如何在Visual Studio C++中使用第三方DLL文件?

我知道我需要使用LoadLibrary().但是,为了使用第三方DLL文件,我需要采取哪些其他步骤?

我只是跳进了C++,这是我唯一没有得到的部分(作为Java程序员).我只是在研究如何使用Qt库和tesseract-ocr,但这个过程对我来说没有任何意义,谷歌也很难.

如何告诉编译器我正在使用的函数?是否应该有来自第三方供应商的包含文件?

c++ dll winapi visual-studio

69
推荐指数
4
解决办法
19万
查看次数

使用依赖项链接动态库

请考虑以下情形:

  • 共享库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
Run Code Online (Sandbox Code Playgroud)

我应该使用哪种波纹管选项?

g++ main.cpp -o main -I. -L. -lB
Run Code Online (Sandbox Code Playgroud)

要么

g++ main.cpp -o main -I. -L. -lB -lA
Run Code Online (Sandbox Code Playgroud)

我无法使用第一个选项.链接器抱怨库libA中未解析的符号.但这听起来有点奇怪.

非常感谢.

- 更新评论:

当我链接二进制文件时,链接器将尝试解析main和libB中的所有符号.但是,libB具有来自libA的未定义符号.这就是链接器抱怨的原因.

这就是我需要与libA联系的原因.但是我发现了一种忽略共享库中未解析符号的方法.看起来我应该使用以下命令行来做到这一点:

g++ main.cpp -o main -I. -L. -lB -Wl,-unresolved-symbols=ignore-in-shared-libs
Run Code Online (Sandbox Code Playgroud)

看起来仍然可以使用该-rpath选项.但是我需要更好地理解它.

有没有人知道使用该-Wl,-unresolved-symbols=ignore-in-shared-libs选项时可能存在的任何陷阱?

- 更新评论2:

-rpath不应该用于此目的.强制在给定目录中找到库是很有用的.这种-unresolved-symbol方法看起来好多了.

再次感谢.

dll dependencies gcc g++

69
推荐指数
2
解决办法
4万
查看次数

无法加载文件或程序集'WebGrease,Version = 1.5.1.25624,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一

我有一个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"/>"
Run Code Online (Sandbox Code Playgroud)

<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
Run Code Online (Sandbox Code Playgroud)

请告知我缺少的东西.

.net c# dll asp.net-mvc-4 webgrease

69
推荐指数
6
解决办法
7万
查看次数

如何以编程方式获取DLL或EXE文件的版本?

我需要使用C或C++中的Win32本机API获取DLL或EXE文件的产品版本和文件版本.我不是在寻找Windows版本,而是通过右键单击DLL文件,选择"属性",然后查看"详细信息"选项卡看到的版本号.这通常是由四部分组成的点缀版本号xxxx

c++ dll winapi exe version

68
推荐指数
5
解决办法
8万
查看次数

如何在没有安装MS Office的计算机上使用Microsoft.Office.Interop.Excel?

我正在编写一个与excel文件一起使用的应用程序.我需要一个删除工作表的功能.我必须使用程序集Microsoft.Office.Interop.Excel.dll.

它在开发人员计算机上运行良好,但当我尝试在服务器上部署它时,我收到一个错误:

无法加载文件或程序集'office,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c'或其中一个依赖项

我知道在计算机上未安装MS Office时会出现问题.客户不希望以任何价格在服务器上安装和购买MS Office.

我按照此处的建议在开发人员计算机上安装"Redistributable Primary Interop Assemblies":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 = false;
        app.AlertBeforeOverwriting = false;

        wbks = app.Workbooks;
        _wbk = wbks.Add(xlsfile);
        shs = _wbk.Sheets;
        int nSheets = shs.Count;

        for (int i = 1; i …
Run Code Online (Sandbox Code Playgroud)

c# dll excel interop

68
推荐指数
1
解决办法
16万
查看次数

如何使我的托管NuGet包支持C++/CLI项目?

我已经制作了一个NuGet包,当我从C#项目中使用它时效果很好.它在lib/net40目录中包含一个DLL ,并且DLL被添加为引用.

现在NuGet支持C++,我如何实际修改我的包,以便可以在C++/CLI项目中将DLL添加为托管引用?我找不到任何解释这个的教程.如果我尝试按原样添加包,则会收到以下错误:

您正在尝试将此软件包安装到以"Native,Version = v0.0"为目标的项目中,但该软件包不包含任何与该框架兼容的程序集引用或内容文件.

有人会认为解决方案是将文件放在lib/native下,但根据http://docs.nuget.org/docs/reference/support-for-native-projects,这是不受支持的.此外,简单地将DLL直接放在lib下似乎没有做任何事情.

显然,我应该使用build/native下的文件.props.targets文件来执行此操作,但是我需要将这些文件放入这些文件中以使其工作?

.net dll c++-cli nuget nuget-package

68
推荐指数
3
解决办法
2万
查看次数

.exp有什么用?和.lib和.dll有什么区别?

在编译和链接期间,.exp的用途是什么?.lib和.dll有什么区别?我知道将使用.lib,而在运行程序时将使用链接和.dll.但是.lib和.dll之间究竟有什么区别?

.lib文件不包含来自.dll文件的函数的代码吗?使用两个单独的文件需要什么?

请澄清.

c dll linker static-libraries

67
推荐指数
1
解决办法
2万
查看次数

编译错误:两个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:\ Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\timesheet\15a75c54\898b48b9\App_Web_admin.master.fdf7a39c.zecazgwd.0.cs"

将"batch = false"设置为web.config是行不通的.我还试图删除"c:\ Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files \"中的所有文件夹,然后清理并重建灵魂.但它仍然无法正常工作.

.net c# asp.net dll

67
推荐指数
3
解决办法
4万
查看次数