我想在 C# 中使用这些方法:
* int LibRaw::open_datastream(LibRaw_abstract_datastream *stream)
* int LibRaw::open_file(const char *rawfile)
* int LibRaw::open_buffer(void *buffer, size_t bufsize)
* int LibRaw::unpack(void)
* int LibRaw::unpack_thumb(void)
存储在 libraw.dll 中。这些函数一一从文件加载数据...我一直在阅读有关 P/Invoke 的信息,但我不确定如何调用它们。任何人都可以向我展示如何在 C# 中一起使用所有这些函数来加载文件(存储在文件夹中的原始图像)或者如何 PIvoke 其中之一。
谢谢!
附注也许这可能有用:http://www.libraw.org/
最佳答案
在我工作的地方,我们发现最好的方法是用 C++/CLI 编写包装代码。我以为我有一篇关于这个过程的好博客文章,但显然不是。我确实有两篇较短的文章,一篇是关于如何使用 unmanaged static libraries 的和一个 how to wrap libraries (在托管 C++ 中与 C++/CLI 相对)。解决方案是相似的 - 只是您必须链接到一个加载 dll 的 stub 库或自己加载 dll 并调用 GetProcAddress 来获取您正在包装的例程。
优点是您可以直接从 C++/CLI 调用非托管代码,并且可以控制编码发生的时间和方式。缺点是您是用 C++ 编写的,您必须控制编码的发生方式。
关于c# - 在 C# 代码中使用 .dll 方法从文件加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2930055/