2010-05-28 42 views
1

加载从文件中的数据我想用C#这些方法:使用.dll文件的方法在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。

Thanx!

p.s.也许这可能是有用的:http://www.libraw.org/

回答

1

我在哪里工作,我们发现最好的方法是使用C++/CLI编写包装代码。我以为我有一篇关于这个过程的好博客文章,但显然不是。我确实有两篇较短的文章,一篇关于如何使用unmanaged static libraries以及how to wrap libraries(使用托管的C++而不是C++/CLI)。该解决方案是相似的 - 只是你必须链接到一个存根库加载dll或自己加载DLL,并调用GetProcAddress来获取你打包的例程。

优点是您可以直接从C++/CLI调用非托管代码,并且可以控制何时以及如何编组。缺点是你用C++编写,你必须控制编组怎么发生。