所以我试图将用 C++ 开发的 DLL 中的函数导出到 C# 项目中。在网上搜索并进行了一些书籍研究之后,我找到了一种方法。然而,我对此的接触是有限的,而且我所有的知识都是自我紧绷的,所以我确信我在某个地方搞砸了。
我正在像这样导出函数:
STDMETHODIMP __export DataSetpImpl::set_HeaderFile(BSTR Value)
并像这样导入它:
public unsafe class test
{
const string _dllLocation = "DllPath.dll";
[DLLImport(_dllLocation, CallingConvention = CallingConvention.stdCall)]
[return: MarshalAs(UnmanagedType.Bstr)]
public static extern string set_HeaderFile([MarshalAs(UnmanagedType.BStr)] String path);
}
然后在应用程序中调用它,如下所示:
test.set_HeaderFile(@"C:\temp\SomeHeaderFile.hdz");
一切都正确构建并且链接得很好......当应用程序点击上述调用时会出现问题。它抛出并错误说:
Unable to find an entry point named 'set_HeaderFile' in DLL 'DLLPath.dll'.
关于我做错了什么的任何想法?如果我对这个主题的了解非常有限,请记住我的知识,我只是在网上和办公室周围的笔记中找到我能找到的东西。