Использование vc ++ Dll в C # - PullRequest
0 голосов
/ 24 июля 2011

Я работаю над проектом c # crawler / Poster, он сканирует блоги, сайты WordPress, используя WebClient для загрузки контента.

Сайты Wordpress используют ошибку или, я не знаю, WebClient, по какой-то причине он не принимает все куки, из блогов Wordpress, это может быть мера, чтобы остановить авто-ботов, спамеров.

Поэтому решил использовать Sockets, но, похоже, у sockets также есть несколько проблем, иногда он не возвращает полный ответ, поэтому не надежный, но я нашел хороший рабочий код в VC ++, я пытаюсь использовать его в C #, но я вообще не знаю vc ++.

Вот код

Как мне создать dll из вышеприведенного кода?

Я создал простой dll-проект с использованием vc ++, но не смог включить приведенный выше код в проект.

Обновлена ​​ссылка на Код

Ответы [ 3 ]

0 голосов
/ 24 июля 2011

Вы можете использовать вызовы платформы, создавая объявление для каждой нужной вам функции. Вот пример импорта функции WinAPI MessageBox (обратите внимание, что это не то же самое, что класс MessageBox в .NET!)

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
0 голосов
/ 24 июля 2011

Теперь, когда я скачал твой код, я могу сказать это ...

Даже если мы получили этот код для компиляции, нам все равно придется выполнять обычную тяжелую работу по взаимодействию между C ++ и C #. И код даже не готов к этому. Файл http_download.h представляет собой большой набор встроенных классов. И инструкции по созданию C ++ Code, вызываемого из C #, приводятся здесь слишком долго. Вы должны были бы получить этот код для компиляции в виде DLL. Затем из DLL либо экспортируйте набор функций «C», которые вызывают ваш C ++, чтобы делать то, что вы хотите. Или преобразовать эти классы C ++ в COM-объекты с помощью библиотеки типов.

Но давайте проанализируем, что вы действительно пытаетесь сделать:

Вы хотите сканировать веб-страницы, но WebClient не работает.

Так что я думаю, что реальный вопрос, который вы хотите задать:

Почему WordPress не принимает мои куки с WebClient?

И я действительно не знаю ответа, потому что вы не поделились своим кодом WebClient или не выяснили, в чем, по вашему мнению, может быть проблема. Но держу пари, что это легко решаемая проблема.

Я уверен, что WebClient будет в 10 раз проще в использовании, чем некоторый код C ++, взломанный как один .h файл, который выглядит не очень красиво. И это будет в 100 раз проще, чем пытаться собрать HTTP-библиотеку с использованием чистых сокетов (это то, чем является WebClient, но он поддерживает все функции, которые вам нужны, но еще не реализованы).

Извините, если я короткая. Я пытаюсь убедить вас подумать об этом лучше, чем делать это трудным путем.

0 голосов
/ 24 июля 2011

Создайте библиотеку классов с помощью кода C ++ и добавьте ее в качестве ссылки на ваш проект C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...