#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
#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

