powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Создание DLL
6 сообщений из 6, страница 1 из 1
Создание DLL
    #32171933
Случайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые коллеги ! Вообще, пишу я на Visual FoxPro, и решил написать на MS VC++ 6.0 махонькую функцию, оформить ее в виде DLL и вызывать из VFP. О С++ знания у меня примитивные, но не обессудьте за глупые вопросы. Написал на С функцию, отладил - работает, теперь выбираю тип проекта Win32 Dynamik Link Library, ввожу имя, получаю дерево проекта, в файл StdAfx.cpp вставляю, что сам наваял, определив свою ф-цию как
void _ff(void), компиляю, вроде компиляется и без ошибок. Пытаюсь зарегистрить в системном реестре : REGSVR32 _MyDll, а он пишет , что не находит точки входа, ну и дальше из ФоксПро, понятно, ничего не вызывается. Думаю, что для уважаемых коллег не составит труда указать на мои ляпы, и в двух словах объяснить, как все таки быстро создать DLL. Заранее всем признателен
...
Рейтинг: 0 / 0
Создание DLL
    #32171942
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ненадо ее так !

Это же не COM обьект итд ...
...
Рейтинг: 0 / 0
Создание DLL
    #32171984
Alexey M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В примерах к VC++ есть проектик "A Simple DLL" - посомтри и сдлеай как там - все будет работать.
...
Рейтинг: 0 / 0
Создание DLL
    #32172152
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и ее вовсе не надо регестрировать в системе типа RegSrv32 итд...
...
Рейтинг: 0 / 0
Создание DLL
    #32172563
maratka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
файл stdafx.cpp лучше не трогать - он используется для прекомпилиров. заголовков (ускорение перекомпиляции проекта). лучше добавить в твой проект файл yourname.cpp и yourname.h и с ними работать. Регистрить не нужно - это не COM-сервер. используемые ф-ии в Фоксе нужно будет описать как экспортируемые.
ну и боюсь показаться банальным, но скорее всего их нужно будет описать как _stdcall. imho с фоксом не работал, но думаю так.
...
Рейтинг: 0 / 0
Создание DLL
    #32177679
Hunter_eea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример:

Файл .h для dll

#ifndef _DLLTEST_H_
#define _DLLTEST_H_

#include <iostream.h>
#include <stdio.h>
#include <windows.h>

extern "C" __declspec(dllexport) void NumberList();
extern "C" __declspec(dllexport) void LetterList();


#endif
//___________________________________________
Файл .cpp для dll

#include "dlltest.h"

#define MAXMODULE 50

char module[MAXMODULE];



extern "C" __declspec(dllexport)

void NumberList() {

GetModuleFileName(NULL, (LPTSTR)module, MAXMODULE);

cout << "\n\nThis function was called from "
<< module
<< endl << endl;

cout << "NumberList(): ";


for(int i=0; i<10; i++) {

cout << i << " ";
}

cout << endl << endl;
}



extern "C" __declspec(dllexport)

void LetterList() {

GetModuleFileName(NULL, (LPTSTR)module, MAXMODULE);

cout << "\n\nThis function was called from "
<< module
<< endl << endl;

cout << "LetterList(): ";


for(int i=0; i<26; i++) {

cout << char(97 + i) << " ";
}

cout << endl << endl;
}
//___________________________________________
Файл cpp в котором вызымаешь функции из dll'ки
#include <windows.h>
#include <iostream.h>
#include <stdio.h>
#include <conio.h>

#define MAXMODULE 50

typedef void (WINAPI*cfunc)();

cfunc NumberList;
cfunc LetterList;

void main() {

HINSTANCE hLib=LoadLibrary("DLLTEST.DLL");


if(hLib==NULL) {

cout << "Unable to load library!" << endl;
getch();
return;
}

char mod[MAXMODULE];

GetModuleFileName((HMODULE)hLib, (LPTSTR)mod, MAXMODULE);
cout << "Library loaded: " << mod << endl;


NumberList=(cfunc)GetProcAddress((HMODULE)hLib, "NumberList");
LetterList=(cfunc)GetProcAddress((HMODULE)hLib, "LetterList");

if((NumberList==NULL) || (LetterList==NULL)) {

cout << "Unable to load function(s)." << endl;
FreeLibrary((HMODULE)hLib);
return;
}

NumberList();
LetterList();

FreeLibrary((HMODULE)hLib);

getch();
}
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Создание DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]