如何导出C#dll方法/函数以在C ++中使用它

用户4437794

我已经完成了用C#编写代码的工作,下面给出了一个小方法

 public  static unitdefn GetUnit(XmlDocument doc)
    {

        XmlNodeList nodeList1 = (XmlNodeList)doc.DocumentElement.SelectNodes("//UnitDefinitions/Unit");
        int countdefn = nodeList1.Count;
        unitdefn[] arrunt = new unitdefn[countdefn];
        if (countdefn != 0)
        {

            int i = 0;
            foreach (XmlNode node in nodeList1)
            {
                XmlAttribute att = node.Attributes["name"];
                if (att != null)
                {
                    string idu = node.Attributes["name"].Value;
                    //System.Console.WriteLine(id1);
                    arrunt[i].name = idu;
                }
                i++;
            }

        }
        return arrunt[0];
    }

我想在我的C ++项目中使用这种方法,我已经按照下面的方法进行了操作

int  xmlRead()
{

int x=1,s=1;
char xmldllpath[1000]="//dllpath";
HMODULE h = LoadLibrary(xmldllpath);

if (!h) {
    printf("error: Could not load %s\n", xmldllpath);
    return 0; // failure
}

getAdr(&s, h, "GetUnit");
}

dll已成功加载,但未通过任何特定方式获取该方法

a安

别。不支持从C#导出方法。手动编辑发出的程序集几乎是不可能的,但实际上-不能。

您可以使用一些适当的解决方案:

  • 使用C ++ / CLI项目将托管方法公开给非托管代码
  • 使用COM(.NET基本上是COM 2.0,因此非常简单;在C ++方面也很容易使用)
  • 在初始化时将委托传递给非托管代码,并在需要时调用
  • 使用其他进程间通信方法(例如,命名管道,TCP ...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章