Здравствуйте, NWhisper, Вы писали:
NW>Всем привет! Встал интересный вопрос, можно ли так сделать на Visual C++?
NW>Допустим, есть заголовочный файл:
NW>NW>//file1.h
NW>class API App
NW>{
NW>public:
NW> void foo();
NW>}
NW>
NW>И есть исходник:
NW>NW>//file1.cpp
NW>#define API
NW>#include "file1.h"
NW>void App::foo()
NW>{}
NW>
NW>После выполнения cl /MD file1.cpp получается файл file1.obj.
NW>Далее, пишем еще один исходник:
NW>NW>//file2.cpp
NW>#define API __declspec(dllexport)
NW>#include "file1.h"
NW>
NW>После сборки этого исходника командой cl /LD /MD file2.cpp /link file.obj появляется file2.dll, которая не экспортирует App::foo.
NW>Может кто-нибудь сказать почему не экспортируется App::foo?
1. Как определил, что не экспортируется?
2. Все должно быть в порядке, если же ты будешь использовать этот класс из другого модуля, то в его объявлении надо будет ставить __declspec(dllimport)