如何为C#DLL提供C兼容接口?

问题描述 投票:0回答:1

我拥有的第三方应用程序可以调用扩展DLL,如果它们具有如下所述的C兼容接口。

我希望第三方应用程序调用我的C#DLL,因为我宁愿使用C#而不是C。(也许我的另一选择是编写一个C DLL包装器来调用我的C#DLL,这是一个额外的步骤我可能不正确)。

我已经搜索了网络和SO,但没有找到(或识别出)与我的问题完全匹配的东西。

最好的建议似乎是这里的C#代码中的特殊编组声明:Calling a C# DLL from C; linking problems

是否可以编写具有如下所示的C兼容接口的C#DLL?如果是这样,有人可以告诉我我该怎么做还是将我指向一些文档?

第三方应用程序文档说,“ DLL函数必须是带有单个LPCSTR(指向常量字符串的长指针)参数的PASCAL函数。所调用的C或C ++ DLL函数必须具有与以下等效的原型:

extern "C" __declspec(dllexport) void __stdcall fn(LPCTSTR szParam );
c# c dll dllexport
1个回答
0
投票

看这篇文章:https://www.codeproject.com/Articles/12512/Using-the-CDECL-calling-convention-in-C-changing

它讨论了一个不同的问题(与您相反),还解释了C#函数的链接-默认情况下,C#使用__stdcall(并且不能覆盖它)。这意味着您的第三方应用程序应该能够调用C#函数。你试过了吗?您收到任何错误吗?

© www.soinside.com 2019 - 2024. All rights reserved.