Всем привет! Встал интересный вопрос, можно ли так сделать на 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?