Одно из наших приложений находится в C # /. NET 1.1 / VS2003 и должно оставаться таким, как есть: - (
Мне нужно использовать код из другой сборки C #, которая находится в .NET 2.0: из-за техническойограничения (обязательный .NET 1.1, поэтому прямое использование .NET 2.0 невозможно), я забрал код из проекта .NET 2.0, чтобы попытаться адаптировать его к .NET 1.1 (непросто, поскольку нет обобщений, частично запрещено и т. д.).
Мой код 1.1 теперь компилируется, но не выполняется во время выполнения из-за EntryPointNotFoundException из-за P / Invoke для неуправляемой DLL.
Что странно, это то, что я пыталсясначала проверьте мои изменения в .NET 2.0, и у меня нет проблем с импортом DLL:
[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_GetFileTypeFromHandle")]
public static extern FREE_IMAGE_FORMAT GetFileTypeFromHandle(ref FreeImageIO io, fi_handle handle, int size);
Декларация одинакова в обоих проектах, конечно, DLL одинакова. dumpbin.exe дает для подписи:
_FreeImage_GetFileTypeFromHandle@12
Я также пытался объявить точку входа с этим именем, но это тоже не работает, а также отчаянно пытался изменить CallingConvention
, CharSet
, ExactSpelling
... Ни за что!
Это может происходить либо:
из-за изменения способа работы DllImport
между .NET 1.1 и 2.0, но я не нашел ничего, что могло бы быть в этомпуть
из-за ошибки при переносе моего кода до .NET 2.0 на 1.1, но я не понимаю, как это могло быть именно в этом случае (я даже проследил кодчтобы увидеть размеры аргументов, io
и handle
, они одинаковы в обоих случаях)
... что-то, о чем я не могу думать!
Большое спасибо за ваш опыт!