У меня есть файл dll и соответствующий ему файл .h. Я хочу вызвать это из программы C#. Подозреваю, что это либо невозможно, либо очень сложно.
Вот часть файла .h, который я хочу использовать
int SelfTest();
/******************************************************
* C++ functions
******************************************************/
int CPP_Init(std::string baseDirectory);
std::vector<std::string> CPP_GetKeys();
std::string CPP_ProcessData(std::string plaintext,
std::string keyName,
std::string sourceStation,
std::string destinationStation,
int encryptData,
int extendedChecksumHeader);
std::vector<std::string> CPP_Decrypt(std::string cipherText);
Оцените это как «невозможно». Для правильной обработки векторных шаблонов std: string и std:; требуется оболочка C++ / CLI.
Мартин, я буду называть это так, как вы рекомендуете. Ничего не пробовал. Я потратил несколько часов на поиск ответа в Интернете и подозреваю, что это просто невозможно.
Смотрите здесь для ответа: stackoverflow.com/a/53179999/3346583
Кристофер, если я сделаю №1 в этом списке и просто добавлю dll в качестве ссылки на проект. Я подозреваю, что со строками и векторами функций все еще будут проблемы?
У меня есть мысль. Что, если я напишу C++ DLL, которая вызывает эту dll и тем самым предоставит более простые типы данных для аргументов и значений, возвращаемых функцией? Что будет проще всего? Массив символов?
О боже. Я даже не могу добавить файл dll в качестве ссылки. Он говорит: «... не удалось добавить. Убедитесь, что файл доступен и является допустимой сборкой или компонентом COM». Эта dll, вероятно, была сделана QT. Возможно, мне просто придется отказаться от его использования.





Назовите это как? Через COM? Через импорт DLL? Что вы уже пробовали?