Я решил эту проблему следующим образом:
Добавить промежуточное программное обеспечение для обработки ответа, если оно является перенаправлением для запроса ajax, изменить ответ на нормальный ответ с URL-адресом перенаправления.
class AjaxRedirect(object):
def process_response(self, request, response):
if request.is_ajax():
if type(response) == HttpResponseRedirect:
r = HttpResponse(json.dumps({'redirect': response['Location']}))
return r
return response
Затем в ajaxComplete, если ответ содержит перенаправление, он должен быть перенаправлен, поэтому измените местоположение браузера.
$('body').ajaxComplete(function (e, xhr, settings) {
if (xhr.status == 200) {
var redirect = null;
try {
redirect = $.parseJSON(xhr.responseText).redirect;
if (redirect) {
window.location.href = redirect.replace(/\?.*$/, "?next=" + window.location.pathname);
}
} catch (e) {
return;
}
}
}
Сначала удостоверьтесь, что функция на самом деле экспортируется:
В Командной строке Visual Studio, используйте dumpbin /exports whatever.dll
C# не поддерживает искажение имени C++, и любой необходимо объявить функции C++ с
extern "C" {...}
(не может опция, если они от третьего лица), или назовите скорректированное имя непосредственно, если можно заставить это работать. Может быть легче заставить третье лицо предоставлять неискаженный интерфейс функциональности.
Решенный - по крайней мере до такой степени, когда программа не повреждает и на самом деле возвращает меня значение bool.
ключ, я предполагаю, должен был определить точку входа как 'искаженное' имя
[DllImport(@"cnOCRsdk.dll", EntryPoint="?recoCHN_P_Name@CcnOCRsdk@@QAE_NPADPAURECO_DATA@@@Z")]
public static extern bool recoCHN_P_Name(ref string imgPath, ref RECO_DATA o_data);
После этого, я получил некоторые другие ошибки, но 'неспособный найти, что точка входа' ушла.
Вы могли попытаться использовать неискаженное имя при определении CallingConvention в DllImport
Я записал бы обертку с помощью C++ / CLI. Эта обертка будет в состоянии включать.h файлы и ссылку на .lib файлы, которые Вы получили от стороннего поставщика. Тогда это и легко и безопасно записать управляемый интерфейс для Вашей программы C#.