使用平台在C#DLL中调用
Using Platform Invoke in a C# dll
我提出了引起头痛的问题。
让我首先描述一个总体想法:
1)我得到了一些本机C 代码,我为此写了一个包装器,以使通过平台Invoke访问。结果是,让我们说包装。dll。
2)我得到了一个包含应用程序,app.exe和class库的C#项目,让它为plugin.dll。
3)我想在插件中导入包装。dll
一般来说。
现在问题:
这个想法正在导入包装。dll,使用c#
中的pinvoke[DLLImport("Wrapped.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern void someFunction();
该导入效果很好,只要我在我的C#应用程序main()中进行操作。但是,这个想法是从我的plugin.dll访问它。由于某种原因,这不起作用,我得到一个例外:
System.DLLnotFoundException in Plugin.dll
这与包装的路径无关。我尝试了pluging.dll的标准 bin文件夹,应用程序和绝对路径(例如" C. user projects ")。
我现在要问的是:
仅在应用程序中调用一个平台?是否有一些额外的步骤可以使其在DLL中访问?
请注意,这与我的wrapper.dll无关。我可以从我的应用程序main()导入并调用它。我很确定这与路径无关。
预先感谢
ben
不要烦人,但我想说的是问题。
无论如何,包装DLL在.NET中的另一个常见错误...检查您的编译平台,wrapper.dll 32bit/64bit(例如plugin.dll)吗?
为了避免混乱,请不要使用"任何CPU"。
相关文章:
- PowerShell 使用结构类型参数调用 C++ DLL 的导出函数
- 在 NodeJS 异步调用C++ DLL
- 从C#调用C++dll引发SEHException
- 为什么在调用C#DLL时不需要提供字符串缓冲区
- 从Delphi调用C++DLL时发生访问冲突
- 从 Python 调用 Windows DLL 函数时出错
- 从 C# Windows 应用程序调用 C dll 会导致 svchost.exe 崩溃
- 从Excel VBA调用C++DLL只能从Visual Studio中的调试实例工作
- 从 JNI 调用的 DLL 从哪里获取其内存以进行分配,例如 Malloc
- 使用指针调用C++ DLL 函数
- 如何从 UWP 应用调用"libheif.dll"函数
- 从C++调用 Delphi DLL 函数
- 在C#代码中调用C DLL
- 从C#调用C DLL方法
- 是否可以使用 Excel::_Application::Run 调用 C# dll 方法
- 从C++调用 Delphi DLL IStream 参数的问题
- 在 C# 中调用C++ DLL 库中导出的函数
- 内存损坏从vb.net调用c dll
- 当参数之一是指针数组时,如何从C#调用C DLL
- 调用C++dll的C#dll在windows 10上找不到该dll