C# 创建和使用C DLL

C# 创建和使用C DLL,c#,dll,C#,Dll,我用的是VS2010。我创建了一个C类并将其编译为DLL,然后向其中添加了一个windows窗体项目以测试DLL。我在解决方案资源管理器的TestApp项目中添加了对DLL的引用。两个项目编译时都没有错误。但是,当我运行TestApp时,当我调用dll中的方法时,会得到一个NullReferenceException。错误表明没有对象的实例,我不理解它是被调用的方法 我所做的一切都与我在互联网上找到的其他DLL示例相同。例如: 但我显然错过了一些基本的东西 //DLL项目 namespace

我用的是VS2010。我创建了一个C类并将其编译为DLL,然后向其中添加了一个windows窗体项目以测试DLL。我在解决方案资源管理器的TestApp项目中添加了对DLL的引用。两个项目编译时都没有错误。但是,当我运行TestApp时,当我调用dll中的方法时,会得到一个NullReferenceException。错误表明没有对象的实例,我不理解它是被调用的方法

我所做的一切都与我在互联网上找到的其他DLL示例相同。例如:

但我显然错过了一些基本的东西

//DLL项目

namespace SLink
{
    public class AmpAPI
    {
        public String[] ReadID( Int32 id )
        {
            String[] result = new string[] { "A", "B", "C", "D" };
            return result;
        }
    }
}
//测试应用

using SLink;

namespace TestApp
{
    public partial class frmMain : Form
    {
        AmpAPI amp;

        public frmMain()
        {
            InitializeComponent();
        }

        private void frmMain_Load( object sender, EventArgs e )
        {
            amp = new AmpAPI();
        }

        private void btnUpdate_Click( object sender, EventArgs e )
        {
            String[] result = new String[] { "", "", "", "" };
            result = amp.ReadID( 0 ); // <-- NullReferenceException
        }
    }
}
窗体加载时,似乎没有调用frmMain_加载方法

你只是复制并粘贴代码吗?这还不足以将该方法注册为加载事件的事件处理程序

通过在设计器中双击表单,可以向表单的加载事件添加新的处理程序。然后可以编辑方法的主体。 或者,您可以选择一个现有的方法来处理事件。要执行此操作,请单击设计器中的表单,转到属性,选择事件,查找加载,然后从下拉列表中选择方法。 窗体加载时,似乎没有调用frmMain_加载方法

你只是复制并粘贴代码吗?这还不足以将该方法注册为加载事件的事件处理程序

通过在设计器中双击表单,可以向表单的加载事件添加新的处理程序。然后可以编辑方法的主体。 或者,您可以选择一个现有的方法来处理事件。要执行此操作,请单击设计器中的表单,转到属性,选择事件,查找加载,然后从下拉列表中选择方法。 试试这个:

    private void btnUpdate_Click( object sender, EventArgs e )
    {
        String[] result = amp.ReadID( 0 );
    }
不确定是否喜欢上一个初始化阵列的实现。

尝试以下操作:

    private void btnUpdate_Click( object sender, EventArgs e )
    {
        String[] result = amp.ReadID( 0 );
    }

不确定它是否喜欢您之前初始化阵列的实现。

堆栈跟踪是什么?你在调试器中看到了什么?堆栈跟踪是什么?您在调试器中看到了什么?