Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2010, 13:03   #1
mike_tihomirov
Пользователь
 
Регистрация: 15.02.2010
Сообщений: 58
Печаль Как слинковать .def файл?

Доброго дня всем.
Вопрос такой: у меня MSVS 2005.
Создал .h файл с интерфейсом и .cpp с реализацией и .def файл

Есть прога LINK.exe. а вот как дальше быть?
Как-то с консолью надо чето командить, или в самой студии в командной
строке что то вводить.
На F5 выдает:
Код:
Command line warning D9028 : minimal rebuild failure, reverting to normal build.
и
Код:
fatal error C1902: Program database manager mismatch; please check your installation

к примеру:
//myinterface.h
Код:
struct I_MyInterface
{
	virtual bool Init(int params) = 0;
	virtual bool Release() = 0;
	virtual bool DoStuff() = 0;
};
extern "C" 
{
	__declspec(dllexport) HRESULT GetMyInterface(I_MyInterface** pInterface);
	typedef HRESULT (*GETINTERFACE)(I_MyInterface** pInterface);

	__declspec(dllexport) HRESULT FreeMyInterface(I_MyInterface** pInterface);
	typedef HRESULT (*FREEINTERFACE)(I_MyInterface** pInterface);
}
//=================
//myinterface.cpp
Код:
#include "I_MyInterface.h"
#include <objbase.h>

class CMyClass : public I_MyInterface
{
public:
	bool Init(int params){cout << params << endl;}
	bool Release(){return true;}
	void DoStuff(){cout << "Use OK!" << endl;}	

	CMyClass(){}
	~CMyClass(){}
};
//-------------
HRESULT GetMyInterface(I_MyInterface** pInterface)
{
	if(! *pInterface)
	{
		*pInterface = new CMyClass;
		return S_OK;
	}
	return E_FAIL;
}
//--------------------
HRESULT FreeMyInterface(I_MyInterface** pInterface)
{
	if(! *pInterface)
		return E_FAIL;
	delete *pInterface;
	*pInterface = 0;
	return S_OK;
}
//===================
//myinterface.def
Код:
LIBRARY	"myinterface"
EXPORTS 
		GetMyInterface
		FreeMyInterface
или def. файл не правильно написал.
Вобщем я конкретно запутался.
Заранее спасибо за понимание!!!
Не бывает глупых вопросов.
Глупец тот, кто не спрашивает.
mike_tihomirov вне форума Ответить с цитированием
Старый 15.02.2010, 15:18   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Код:
LIBRARY	"myinterface"
EXPORTS 
		GetMyInterface @1
		FreeMyInterface @2
Номера экспортируемым функциям нужно назначать. А вообще, посмотрите вот эту статью там все про DLL, что вам нужно.
MaTBeu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как текстовый файл в формате word 2007 переделать в файл в формате ZAY JULIA Microsoft Office Word 13 09.06.2010 19:43
Проблема с .def файлом!!! HellStranger Общие вопросы C/C++ 0 17.09.2009 16:39
Как записать файл в файл программы? Хамяг Общие вопросы Delphi 2 02.11.2008 16:01
как сделать чтоб экселев. файл висел открытым на рабочем столе как афиша на заборе? Мара Помощь студентам 6 24.07.2008 13:29