2

我正在尝试连接到只有 C# API 的商业服务器应用程序。

我想这样做的最佳方法是创建一个 C# DLL - 这就是我所做的。但是,当使用 3rd 方工具检查 DLL 中包含的方法时,这些方法似乎不可见。

我在 StackOverflow 上进行了广泛搜索,发现以下建议适用于大多数人 - 但是在使用此扩展程序时这些方法仍然不可见。

因此,可能是时候寻找一种替代方法来解决这个问题了——一个选择可能是 C# 控制台应用程序。

关于什么是最好的方法的任何想法?

编辑:

运行 DUMPBIN 程序后,输出如下:

C:\Program Files (x86)\Microsoft Visual Studio 11.0>dumpbin /EXPORTS "C:\Users\mark\Desktop\Test.dll"

Dump of file C:\Users\mark\Desktop\Test.dll

File Type: DLL

  Summary

        2000 .reloc
        2000 .rsrc
        2000 .text
4

2 回答 2

3

如果 Basic+ 可以选择调用 C 代码,您可以选择在托管 C++ 中创建项目:

在此处输入图像描述

导出一些装饰如下的函数:

    extern "C"{
    __declspec(dllexport) void _cdecl MyFunction()
     {
          _MyImpl(); //see below wy this
      }
    }

void MyImpl()
{
    MyCSharpObj^ test = gcnew MyCSharpObj()...
    test->Methods(...
}

在用 extern C 装饰的部分之外,您可以安全地调用和混合托管和非托管调用。您应该跳出 extern C 块的原因是几乎所有托管函数都有重载,并且 Extern C 即使在调用中也不支持方法重载。您可以通过向您的 .NET 库添加引用(实际上您可以使用托管 C++ 编写所有代码,但不是那么友好)来调用 c#。

于 2013-09-19T10:26:46.717 回答
1

Basic+ 似乎是由Revelation Software制作的。

此页面上,它说:

OpenInsight 9.1 发布

这个新的 OpenInsight 版本包括几个 .NET 创新。NetOI 使开发人员能够使用他们的 Microsoft Visual Studio 许可证进行编码并使用 OpenInsight 数据库。RevDotNet 功能提供了一种在 OpenInsight 应用程序中调用 .NET API和使用 .NET 控件的方法。

您可以使用 RevDotNet 直接调用您的 C# API 吗?

于 2013-09-19T10:34:22.083 回答