Официальный сайт студ.городка НГТУ
Программирование и БД » [Visual Studio] Как использовать код на С в C# 

#1  10.11.10 23:42

[Visual Studio] Как использовать код на С в C#

есть библиотека написанная на С (исходник). Мне нужно использовать функции из этой библиотеке в проге на C#. Как?
замучился лазить по инету, не получается эту либу в DLL загнать...
переписывать либу на С# не вариант... Желательно поминимуму изменять код, который на С.
какие вообще есть варианты? можно какнить "через жопу", пофиг, главное работоспособность...

ну или подскажите готовую либу для получения хэша (для разных алгоритмов, например: MD5, CRC, SHA, Гост и т.д.)
впринципе не обязательно юзать VS для либы... хочется чтобы готовый проект был на C#, так как на нем написать быстрее всего (для меня естественно).

Offline

#2  11.11.10 00:07

Re: [Visual Studio] Как использовать код на С в C#

P/Invoke
компилируешь из исходника на DLL, затем делаешь обертку на .net

Так же есть хелперы, которые помогут сгенерировать оберку из хедеров

http://msdn.microsoft.com/ru-ru/library/fzhhdwae.aspx
http://msdn.microsoft.com/en-us/library … 71%29.aspx
http://www.adp-gmbh.ch/csharp/call_dll.html
http://clevelus.ru/dotnet/ispolzovanie- … nvoke-v-c/

Offline

#3  11.11.10 00:25

Re: [Visual Studio] Как использовать код на С в C#

forsake, спс, ща порою, чет у меня не получалось длл собрать) ща еще раз попробую)

Offline

#4  11.11.10 00:29

Re: [Visual Studio] Как использовать код на С в C#

Fire Stream написал(а):

чет у меня не получалось длл собрать

Почему?

Offline

#5  11.11.10 00:47

Re: [Visual Studio] Как использовать код на С в C#

создаю новый пустой проект с++, вставляю в него 2 файла (с и h), они тянут за собой еще кучу файлов, в настройках проекта ставлю DLL, компилю, а он мне:

Код::

Error	1	error LNK2001: unresolved external symbol _snefru256_init	D:\FS_tmp\LibRHash\lib1test\lib1test\rhash.obj	lib1test

и так для каждой функции в каждом файле.
CLR, MFC, ATL отключены

чет я косячу, да? поди чтонить подписать просто надо?

Исправлено Fire Stream (11.11.10 00:49)

Offline

#6  11.11.10 01:22

Re: [Visual Studio] Как использовать код на С в C#

собрал по другому проект, засунул туда функцию которая вызывает функцию либы, тот же результат((( в инете чет не могу ничего толкового найти(((

Код::

Error	1	error LNK2019: unresolved external symbol _rhash_msg referenced in function "int __stdcall hashmsg(unsigned int,unsigned char const *,unsigned int,unsigned char *)" (?hashmsg@@YGHIPBEIPAE@Z)	D:\FS_tmp\LibRHash\lib2test\lib2test\lib2test.obj	lib2test

Offline

#7  11.11.10 03:09

Re: [Visual Studio] Как использовать код на С в C#

Fire Stream, короче влом чё-то писать. На ссыль на длл рабочую -
magnet:?xt=urn:tree:tiger:ALV7IEAP66AQT … empDll.rar
Если не понятно че будет - спросишь, сейчас спать охота.

Offline

#8  12.11.10 00:52

Re: [Visual Studio] Как использовать код на С в C#

фуф, с горем пополам получилось спаять dll, пришлось закинуть все файлы из ютой либы в проект, и ошибка пропала. я думал это не обязательно)
потом долго парился с маршалингом, пришлось написать в длл еще одну функцию для конвертации тех типов в похожие на типы С#, потом еще подбирал типы в C#... в общем гемор, но все получилось)
всем спасибо)

Offline

Программирование и БД » [Visual Studio] Как использовать код на С в C# 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.032 сек.
Выполнено 14 запросов.