17.08.2006 12:21:13А есть готовый класс? Ответов: 15
Горячев Андрей
А ест me кого-нибудь уже готовый написанный класс на C#, который служит обёрткой для вызова CryptoAPI функций?
Через pinvoke или как нибудь ещё?!
Буду очень благодарен ;)
 
Ответы:
17.08.2006 12:29:39Дробязко Алексей
В своих горе-изысканиях я пользовался обертками с www.pinvoke.net.
17.08.2006 12:31:55Горячев Андрей
А у Вас не осталось мб класса, реализующего это всё?
17.08.2006 12:41:12Дробязко Алексей
от туда я использовал всего пару функций.
И то у меня это вызвало проблемы, о которых я написал на форум и ответа пока не получил.
Так что класса как такового у меня нет. Да и там описана всего маленькая кучка ф-ий.
17.08.2006 13:17:56Кирилл
Меня самого в ближайшем будущем ждет совмещение мэнэндж и анменедж кода такого же плана. Я пока что еще не решил - буду ли через DllImport работать или буду писать обертку из dll на unmanaged C++ коде, с последующим экспортированием функций. Наверное, второе проще.
17.08.2006 13:26:05Горячев Андрей
А второе это как? Несовсем понял что то..
18.08.2006 14:46:06Кирилл
Написать, например, класс наложения ЭЦП, закинуть его в unmanaged dll. Потом в в managed коде импортировать функции класса, сам класс.
18.08.2006 14:48:22Горячев Андрей
А как из unmanaged dll импортировать класс и его методы?
Вот в этом загвоздка у меня что то
18.08.2006 14:49:51Кирилл
[DllImport("test.dll", CharSet=CharSet.Auto)]
private static extern bool Sign(...);
18.08.2006 14:52:33Горячев Андрей
1 вопрос: где при этом test.dll должно лежать?
2 вопрос: это импорт функции, а как импортировать класс например?
3 вопрос: test.dll - это же просто dll wizard например в C++ Builder?
18.08.2006 15:21:29Горячев Андрей
[DllImport("Test.dll")]
public static extern int lol(int x);

private void cryptoTestButton_Click(object sender, EventArgs e)
{
MessageBox.Show(lol(15).ToString());
}

Test.dll лежит около экзешника программы.

Ругаицо, говорит, что типа не может загрузить Test.dll
Может с нимкак то хитро надо?
18.08.2006 16:07:59Дробязко Алексей
Можно попробовать
[dllimport("d:\folder1\folder2...\test.dll")]
18.08.2006 16:13:54Горячев Андрей
ТАк, с этим разобрался, косяк Билдера был.
Теперь он мне говорит "Немогу найти точку входа в lol в Test.DLL"
18.08.2006 16:14:26Горячев Андрей
ТАк, с этим разобрался, косяк Билдера был.
Теперь он мне говорит "Немогу найти точку входа в lol в Test.DLL"
18.08.2006 16:18:07Дробязко Алексей
Необходимо точно задать имя вызываемой функции (какая в dll - такая и в .NET), ну или добавить entry point!
18.08.2006 16:29:29Горячев Андрей
Они у меня одинаково обзываются, и EntryPoint уже попробовал прописать напрямую в DllImport, ну не хочет находить и всё тут :(