dllexport / dllimport

Don Cherry
Уже с Приветом
Posts: 166
Joined: 13 Oct 2003 20:11
Location: Canada

dllexport / dllimport

Post by Don Cherry »

MS VS 2008 C++
Надо сделать shared global variable between DLL and EXE.
Сделал всё по инструкции
В DLL __declspec( dllexport ) int xyz = 123;
В EXE __declspec( dllimport ) int xyz;

В EXE
- wsprintf видит xyz с value 123
- Debugger не видит, говорит CXX0017: Error: symbol "xyz" not found

Почему?
Настройки Debugger или какой-то принцип/теория ?
Как же дебагить, если дебагер не видит?

Спасибо кто ответит.
User avatar
thinker
Уже с Приветом
Posts: 26871
Joined: 29 Aug 2000 09:01

Re: dllexport / dllimport

Post by thinker »

Дебагер не видит потому что код оптимизирован? Тогда отключить оптимизацию.
All rights reserved, all wrongs revenged.
Don Cherry
Уже с Приветом
Posts: 166
Joined: 13 Oct 2003 20:11
Location: Canada

Re: dllexport / dllimport

Post by Don Cherry »

thinker wrote: 13 Jul 2018 02:23 Дебагер не видит потому что код оптимизирован? Тогда отключить оптимизацию.
Optimization is disabled.
C/C++ Optimization: Disabled (/Od)
В чём-то другом дело.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: dllexport / dllimport

Post by Flash-04 »

А распечатать symbol table никак?
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
AndreyT
Уже с Приветом
Posts: 3000
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: dllexport / dllimport

Post by AndreyT »

В окнах отладки следует обращаться к импортированным именам так

Code: Select all

{,,mydll.dll} xyz
или

Code: Select all

mydll.dll! xyz
Неудобно, но без этого действительно не работает.

https://docs.microsoft.com/en-us/visual ... erator-cpp
Best regards,
Андрей
alex_127
Уже с Приветом
Posts: 7723
Joined: 29 Mar 2000 10:01
Location: Kirkland,WA

Re: dllexport / dllimport

Post by alex_127 »

Don Cherry wrote: 13 Jul 2018 02:02 MS VS 2008 C++
Надо сделать shared global variable between DLL and EXE.
Сделал всё по инструкции
В DLL __declspec( dllexport ) int xyz = 123;
В EXE __declspec( dllimport ) int xyz;

В EXE
- wsprintf видит xyz с value 123
- Debugger не видит, говорит CXX0017: Error: symbol "xyz" not found

Почему?
Настройки Debugger или какой-то принцип/теория ?
Как же дебагить, если дебагер не видит?

Спасибо кто ответит.
А как вы смотрите в дебаггере? Yourdll!xyz

Return to “Вопросы и новости IT”