Нет возвращаемого значения из C ++ DLL с использованием C # - PullRequest
0 голосов
/ 23 февраля 2012

Используя консольное приложение, я использую c ++ com для вызова функции.

Я добавил зарегистрированную DLL в качестве ссылки для проекта, а затем создаю экземпляр объекта и вызываю функцию. (Должен заметить, что я не использую pinvoke, как это делают некоторые другие люди)

В результате я должен получить строку назад, но я просто получаю пустую строку. Единственный способ получить любую форму вывода - включить отладку неуправляемого кода, и из этого я вижу, что он выполняется правильно и возвращает результат.

У меня был поиск по stackoverflow и нескольким другим сайтам, и я не могу найти ничего, что соответствует этому. Любые идеи, что я делаю неправильно или как я могу заставить его вернуть значение?

РЕДАКТИРОВАТЬ : По запросу, здесь код -

COMMODCHECKLib.Modcheck mod = new COMMODCHECKLib.Modcheck();
string output = mod.check("123456");

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

Я бы предложил сначала проверить, не связана ли проблема с кодом C # или библиотекой COM. Для этого вы можете использовать, например, файл VB-Script (.vbs), например

(test.vbs)
Set mod = CreateObject("COMMODCHECKLib.ModCheck")
WScript.echo(mod.check("123456"))

Просто запустите этот скрипт из командной строки (введите test.vbs).

Если это дает желаемый результат, вы по крайней мере знаете, что проблема лежит на стороне C #.

0 голосов
/ 23 февраля 2012

Ну, похоже, что документация для DLL была неправильной и дала функцию check как необходимую мне, но на самом деле была функция с именем checkAllocate , которая мне была нужна использовать. Извинения, ребята - большое спасибо за ваше время и усилия

...