DLL编程中引用其它DLL库的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DLL编程中引用其它DLL库的问题相关的知识,希望对你有一定的参考价值。

如果我要写一个库 A.dll,如果用到了B.dll。那么项目生成后A.dll能否独立使用,还是说使用A.dll的场合就一定要同时存在B.dll。
如果是用B.lib呢?
【VS2008 win32项目 C++】

1、一定要同时存在B.dll

2、如果B.lib不是dll的导入库,那么可以不需要同时存在B.lib;如果B.lib是B.dll的导入库,那么就需要同时存在B.dll
参考技术A

引用的 DLL 未声明?

【中文标题】引用的 DLL 未声明?【英文标题】:Referenced DLL not declared? 【发布时间】:2012-09-21 21:08:21 【问题描述】:

我在我的应用程序中添加了全局错误处理以捕获所有未处理的异常。我现在刚刚添加了自动将错误添加到我的fogbugz 帐户的功能。现在这是我的问题。

我添加了对 dll 的引用,还必须添加库的导入声明。执行此操作后,代码不会显示任何错误。虽然一旦我去调试代码或构建它,我就会收到这个错误:

'BugReport' 未声明。由于其保护级别,它可能无法访问。

我猜这与某种保护有关?这一切都在我的 applicationevents.vb 类中。

我在另一个项目中尝试了相同的代码,它可以正常工作,所以我知道它不是代码。我只是不知道它是什么?我是否必须更改我的应用程序设置中的某些内容? 这是代码。为了隐私,我用我的信息替换了字符串。

Imports FogBugz

Namespace My

' The following events are available for MyApplication:
' 
' Startup: Raised when the application starts, before the startup form is created.
' Shutdown: Raised after all application forms are closed.  This event is not raised if the application terminates abnormally.
' UnhandledException: Raised if the application encounters an unhandled exception.
' StartupNextInstance: Raised when launching a single-instance application and the application is already active. 
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
Partial Friend Class MyApplication

    Private Sub MyApplication_UnhandledException(ByVal _
    sender As Object, ByVal e As  _
    Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) _
    Handles Me.UnhandledException

        'TO DO: SET THESE VALUES BEFORE CALLING THIS METHOD! 
        Dim url As String = "***DemoString"
        'example: http://localhost/fogbugz/scoutSubmit.asp
        Dim user As String = "***DemoString"
        'existing FogBugz User
        Dim project As String = "***DemoString"
        'existing FogBugz project 
        Dim area As String = "***DemoString"
        'existing FogBugz area
        Dim email As String = "***DemoString"
        'email address of the customer who reports the bug
        Dim defaultMessage As String = "Bug has been submitted. Every bug submitted helps us make this software that much better. We really do appreciate it."
        'the message to return to the user if no Scout Message is found for an existing duplicate bug
        Dim forceNewBug As Boolean = False
        'If set to true, this forces FogBugz to create a new case for this bug, even if a bug with the same description already exists.
        '************************************************************************************
        'send the bug we created:
        BugReport.Submit(url, user, project, area, email, forceNewBug, _
        defaultMessage, e.Exception, True, "0.1.2.3", True)


        ' If the user clicks No, then exit.
        e.ExitApplication = _
            MessageBox.Show(e.Exception.Message & _
                    vbCrLf & "Oops! It looks like we have encountered a bug. A bug report has been sent to the developers, so they can have it fixed in a jiffy. Continue?", "An Error has occured.", _
                    MessageBoxButtons.YesNo, _
                    MessageBoxIcon.Question) _
                    = DialogResult.No
    End Sub
End Class


End Namespace

【问题讨论】:

这是一个控制台应用程序吗?您的项目是否依赖其他库? 为什么你有 C# 和 vb.net 标签? 将项目的 .NET Framework 目标版本从客户端更改为完整版本,然后重试。 汉斯你是对的。在我回到这里看你发布这个之前,我已经这样做了。这就是解决方案。我使用的是客户资料。 【参考方案1】:

“保护级别”是指BugReport 类上的访问修饰符。

如果您将一个类声明为 Friend(C# 中为 Internal),则同一程序集 (.dll) 中的其他类可以访问它。

当您尝试从另一个项目中引用该类时,它无法访问。

您需要将Friend 更改为Public

【讨论】:

以上是关于DLL编程中引用其它DLL库的问题的主要内容,如果未能解决你的问题,请参考以下文章

c#编程添加引用dll文件后怎样调用

如何用VS2010编写动态链接库DLL

引用的 DLL 未声明?

Visual Studio/MSBuild 将引用的类库的 app.config 作为 *.dll.config 复制到当前项目的 bin 文件夹

vs2010 C# 添加 DLL引用

C#将引用的dll嵌入到exe文件中