Я пытаюсь создать DLL в Visual C ++ express 2008. Мой проект DLL компилируется нормально, и создается * .dll. Однако, когда я пытаюсь зарегистрировать его в regsvr32, я получаю следующее сообщение об ошибке:
"Модуль name.dll был загружен, но не найден элемент ввода, DllUnregisterServer" (сообщение выглядит примерно так, я перевожу его из испанской версии Windows).
Я использую Windows 7 64 бит O.S. Но я думаю, что * .dll создается в 32-битной из-за моей версии Visual C ++ Express ...
Её код:
DLL.h
#ifndef DLLHEADER_H_INCLUDED
#define DLLHEADER_H_INCLUDED
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
extern "C"
{
struct DLL_API Datos
{
char cad1[100];
char cad2[100];
char cad3[100];
};
DLL_API void __stdcall funcion(char*);
DLL_API void __stdcall saludo(void);
}
#endif
DLL.cpp
#include "stdafx.h"
#include "DLL.h"
void __stdcall funcion(char* ptr)
{
Datos* d = (Datos*)ptr;
std::cout<<"DESDE LA DLL : \n";
std::cout<<"Cadena1 : "<<d->cad1<<'\n';
std::cout<<"Cadena1 : "<<d->cad2<<'\n';
std::cout<<"Cadena1 : "<<d->cad3<<'\n';
}
void _stdcall saludo(void)
{
std::cout<<"Hola desde DLL.\n";
}
Я создал проект, следуя инструкции MSDN, и шаблон также добавляет этот файл:
dllmain.cpp
// dllmain.cpp : Define el 'entry point' para la aplicación DLL.
#include "stdafx.h"
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH :
case DLL_THREAD_ATTACH :
case DLL_THREAD_DETACH :
case DLL_PROCESS_DETACH :
break;
}
return TRUE;
}
Насколько я понимаю, все хорошо, но, видимо, я не могу зарегистрировать * .dll.
Чего-то не хватает?
Спасибо за вашу помощь.