【发布时间】:2011-03-09 02:24:47
【问题描述】:
我正在探索在第三方应用程序的 DLL 插件和 C# 应用程序之间建立桥梁的想法。我正在编写插件 DLL 和 C# 应用程序。该插件将被加载到 3rd 方应用程序中,然后我想使用从 C# 调用插件来间接从 3rd 方应用程序获取数据。
我能够从 C# 的 DLL 中成功调用导出的函数。例如:
C++ DLL:
extern "C" __declspec(dllexport) char * HelloFromDll()
{
char *result;
result = "Hello from my DLL";
return result;
}
C#:
using System.Runtime.InteropServices;
[DllImport(@"MyDll.dll")]
private static extern string HelloFromDll();
然后我可以从 C# 调用这个 DLL 函数并在 UI 中显示字符串。但是,一旦我创建了一个从我的 3rd 方应用程序调用函数的导出函数,我就会得到一个 AccessViolationException。例如,
extern "C" __declspec(dllexport) char * GetData()
{
char *result;
result = 3rdPartyLibrary::SomeFunction();
return result;
}
通过一些测试,当我调用第 3 方函数时,错误似乎就出现了。我该如何解决这个问题?
【问题讨论】: