Хотите знать, если более низкая версия Visual Studio может использовать DLL, построенную с использованием более высокой версии Visual Studio? - PullRequest
2 голосов
/ 18 мая 2011

На компьютере установлены обе версии Visual Studio. Мне интересно, может ли более низкая версия visual studio использовать dll, созданную с использованием более высокой версии visual studio?

Ответы [ 3 ]

3 голосов
/ 18 мая 2011

В общем, вы не можете смешивать dll, скомпилированные с разными версиями CRT, в одной программе. Вот ссылка на документацию на MSDN .

Как уже упоминалось, это работает, если вы сохраняете интерфейс простым. Не освобождайте память, выделенную одним CRT, в DLL, связанной с другой версией CRT, не передавайте FILE * и тому подобное. К сожалению, трудно точно знать, что вы можете сделать, а что нет.

1 голос
/ 18 мая 2011

Только если вы ограничиваете себя так называемыми примитивными типами только для интерфейса C, код, который выделяет любой ресурс , должен освободить его, а также должен абстрагироваться от ресурсов, не связанных с памятью, таких как файловые дескрипторы, и т. д. Вы не можете отправлять классы или объекты C ++ или освобождать память через границы DLL, за исключением некоторых чрезвычайно строгих условий.

1 голос
/ 18 мая 2011

Это зависит от DLL.Например, если вы создаете Win32 DLL, используя простые типы параметров и то же соглашение о вызовах, это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...