Могу ли я импортировать глобальную переменную из DLL? Могу ли я сделать это с файлом DEF? - PullRequest
0 голосов
/ 16 апреля 2020

g cc не имеет проблем с этим, но я изо всех сил пытаюсь добиться того же с помощью link.exe (visual c)

в dll. c, я определяю

int myint = 0 ;
int myfunc ( .... ) {  ...  } ;

в dll.h

extern int myint ;
int myfunc ( .... ) ;

в dll.def

LIBRARY mydll
EXPORTS
    myint
    myfunc

Все отлично работает, dll создана, я могу с ней связаться, мой исполняемый файл вызывает myfun c () успешно. Но я не знаю, как сказать компоновщику, что myint - это переменная, а не функция. Поэтому, когда я пытаюсь

myint = 1 ;

, приложение вылетает.

1 Ответ

0 голосов
/ 16 апреля 2020

Если я хорошо помню, с c ++ вам нужно явно импортировать глобальную переменную (это неявно с функцией). Я бы попробовал с __declspec( dllimport ) int myint;

Если вы хотите скомпилировать для windows и вы уже разрабатываете под linux с G CC, я бы кросс-компилировал из linux с помощью mingw Мне кажется, это намного проще.

...