我想在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其中一个。
感谢名单!
P.S。也许这很有用:http://www.libraw.org/
答案 0 :(得分:1)
在我工作的地方,我们发现最好的方法是在C ++ / CLI中编写包装代码。我以为我有一篇关于这个过程的好博客文章,但显然没有。我有两篇较短的文章,一篇关于如何使用unmanaged static libraries和一篇关于how to wrap libraries(在托管C ++而不是C ++ / CLI)。解决方案类似 - 只需要链接到加载dll的存根库或自己加载dll并调用GetProcAddress来获取正在包装的例程。
优点是您可以直接从C ++ / CLI调用非托管代码,并可以控制编组何时以及如何发生。缺点是你用C ++编写,你必须控制编组的发生方式。
答案 1 :(得分:1)
你必须为C#DLL创建RCW以使它们在VC ++中可用,请参阅以下链接可能有用,因为它提供了逐步指导以实现相同的目标: -