代码之家  ›  专栏  ›  技术社区  ›  Charlie

即使包含System.Runtime.InteropServices,也未在asp.net代码隐藏文件中定义DllImport

  •  1
  • Charlie  · 技术社区  · 13 年前

    我想从我的asp.net 3.5 web应用程序链接到一个C++dll,并使用后面代码中的一些函数。如果我使用DllImport创建一个C#库来链接到C++dll,那么我可以将C#库链接到asp.net应用程序,它似乎可以工作。如何删除C#库并直接链接到C++dll?

    当我尝试在C#代码中使用DllImport时,它后面的代码是未定义的,即使代码看起来与C#库中的代码相同。

    asp.net web应用程序中的代码(由于DllImport被突出显示为未定义,因此不起作用)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Runtime.InteropServices;
    
    
    /// <summary>
    /// Summary description for Chat
    /// </summary>
    public class Chat
    {
        public Chat()
        {
          [DllImport("ChatLib.dll")]
           public static extern void DisplayHelloFromDLL();
        }
    }
    
    1 回复  |  直到 13 年前
        1
  •  1
  •   Adil    13 年前

    你可能需要把 DllImport 类级别上的属性和方法声明外部构造函数。

    public class Chat
    {
        [DllImport("ChatLib.dll")]
        public static extern void DisplayHelloFromDLL();
        public Chat()
        {
    
        }        
    }