Переход с .NET 2.0 на .NET 1.1 - DllImport больше не работает - PullRequest
4 голосов
/ 17 февраля 2011

Одно из наших приложений находится в 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, они одинаковы в обоих случаях)

  • ... что-то, о чем я не могу думать!

Большое спасибо за ваш опыт!

1 Ответ

1 голос
/ 17 февраля 2011

О, я только что узнал, что у меня возникла коллизия имени DLL, которая подняла эту проблему (проект .NET и неуправляемая DLL с тем же именем) ... Ой!Извините, тогда мой вопрос совершенно бессмысленный.Спасибо за чтение в любом случае!

...