2011-07-24 103 views
-2

我正在研究c#爬虫/海报项目,它使用WebClient来抓取wordpress博客,站点以下载内容。在C#中使用vC++ dll#

Wordpress网站使用了一个错误,或者我不知道WebClient,由于某些原因它不接受来自WordPress的博客的所有cookie,这可能是一个措施来阻止汽车垃圾邮件发送者。所以我决定使用套接字,但似乎套接字也有一些问题,它有时不会返回完整的响应,所以不可靠,但我在VC++中发现了一个好的工作代码,我试图在C#中使用它,但我根本不知道vC++。

这里是code

如何创建上面的代码中的一个dll?

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

更新链接Code

+0

您的代码链接带我到一个网站向我要求我的信用卡。也许Dropbox或Microsoft Skydrive将是一种更简单的共享方式。 – selbie

+0

向下滚动显示“慢速下载”,它会免费下载。 –

+0

对不起,1分钟我把一个Skydrive链接,对不起再 –

回答

0

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

+0

试过,给出了编译错误,你可以试试这个代码。 –

+0

正如我已经说过的,对vC++不太了解,请告诉我如何使用代码以及id应该如何做,我下载它的原始链接是http://www.codeproject.com/KB/IP/asynchttp。 aspx –

+0

@downvoter:请您留下downvote的理由吗? – CharithJ

0

您可以使用平台调用,为您需要的每个功能创建一个声明。这里的导入MessageBox WinAPI的函数的例子(注意,这是不一样的。NET MessageBox类!)

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

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

即使我们得到这段代码进行编译,我们仍然需要在C++和C#之间进行正常的互操作。代码甚至没有准备好。 http_download.h文件是一组很大的内联类。从C#开始编写C++代码的指令在这里列出的时间很长。你基本上必须得到这个代码编译为一个DLL。然后从DLL中导出一组调用C++的“C”函数来执行你想要的操作。或者将这些C++类转换为带有类型库的COM对象。

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

你要抓取的网页,但是Web客户端不能正常工作。

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

为什么不WordPress的接受我与Web客户端的cookie?

我真的不知道答案,因为你没有分享你的WebClient代码或者详细说明你认为可能是什么问题。但我敢打赌这是一个容易解决的问题。

我确定WebClient比一些C++代码被黑掉成一个看上去不太漂亮的.h文件要容易10倍。这比使用纯套接字(这是WebClient的功能,但它支持您需要但尚未实现的所有功能)来放置HTTP库的时间要简单100倍。

对不起,如果我很生气。我试图鼓励你认为这是一个更好的方式,而不是艰难的方式。