Всем привет! Встал интересный вопрос, можно ли так сделать на Visual C++?
Допустим, есть заголовочный файл:
//file1.h
class API App
{
public:
void foo();
}
И есть исходник:
//file1.cpp
#define API
#include "file1.h"
void App::foo()
{}
После выполнения cl /MD file1.cpp получается файл file1.obj.
Далее, пишем еще один исходник:
//file2.cpp
#define API __declspec(dllexport)
#include "file1.h"
После сборки этого исходника командой cl /LD /MD file2.cpp /link file.obj появляется file2.dll, которая не экспортирует App::foo.
Может кто-нибудь сказать почему не экспортируется App::foo?
Здравствуйте, 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)
Здравствуйте, NWhisper, Вы писали:
NW>Допустим, есть заголовочный файл:
NW>NW>//file1.cpp
NW>#define API
NW>#include "file1.h"
API void App::foo()
NW>{}
NW>
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
D>1. Как определил, что не экспортируется?
D>2. Все должно быть в порядке, если же ты будешь использовать этот класс из другого модуля, то в его объявлении надо будет ставить __declspec(dllimport)
Определяю с помощью dumpbin
dumpbin /exports file2.dll
Здравствуйте, rm822, Вы писали:
R>Здравствуйте, NWhisper, Вы писали:
NW>>Допустим, есть заголовочный файл:
NW>>NW>>//file1.cpp
NW>>#define API
NW>>#include "file1.h"
R>API void App::foo()
NW>>{}
NW>>
Не помогло.
Еще варианты?
Ну где же вы, профессионалы? Что ж вы все только фары умеете протирать да колеса пинать!