在C#中使用vc ++ Dll

时间:2011-07-24 03:05:19

标签: c# .net windows visual-c++ dll

我正在开发一个c#crawler / Poster项目,它抓取wordpress博客,网站,使用WebClient下载内容。

Wordpress网站使用了一个或者我不知道WebClient的错误,由于某些原因它不接受所有的cookie,来自wordpress博客,它可能是一个阻止自动机器人,垃圾邮件发送者的措施。

所以决定使用套接字,但似乎套接字也有一些问题,它有时不会返回完整的响应,所以不可靠,但我在VC ++中找到了一个很好的工作代码,我试图在C#中使用它,但是我根本不懂vc ++。

以下是code

如何创建上述代码的dll?

我使用vc ++创建了一个简单的dll项目,但无法在项目中包含上述代码。

更新了Code

的链接

3 个答案:

答案 0 :(得分:0)

使用C ++代码创建一个类库,并将其添加为C#项目的引用。

答案 1 :(得分:0)

您可以使用平台调用,为您需要的每个功能创建声明。下面是导入MessageBox WinAPI函数的示例(请注意,这与.NET中的MessageBox类不同!)

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);

答案 2 :(得分:0)

现在我已经下载了你的代码,我可以这样说......

即使我们编译了这段代码,我们仍然需要在C ++和C#之间进行正常的重复操作。而代码甚至还没准备好。 http_download.h文件是一组很大的内联类。有关从C#调用C ++代码的说明,请在此处列出。您基本上必须将此代码编译为DLL。然后从DLL导出一组“C”函数,这些函数调用你的C ++来做你想做的事情。或者将这些C ++类转换为带有类型库的COM对象。

但是,让我们分析一下你真正想做的事情:

  

您想要抓取网页,但WebClient不起作用。

所以我想你想问的真正问题是:

  

为什么WordPress不接受使用WebClient的cookie?

我真的不知道答案,因为您还没有分享您的WebClient代码或详细阐述了您认为可能存在的问题。但我敢打赌,这是一个容易解决的问题。

我确信WebClient的使用比使用一些看起来不太漂亮的.h文件的C ++代码容易使用10倍。它比使用纯套接字组合一个HTTP库要容易100倍(这就是WebClient,但它支持您需要的所有功能,但尚未实现)。

对不起,如果我很简短。我试图鼓励你把这个想法比做难的更好。