我正在尝试在Visual C ++ express 2008中创建一个DLL。我的DLL proyect编译正常,并且创建了* .dll。但是,当我尝试使用regsvr32注册它时,我收到以下错误消息:
“已加载name.dll模块,但未找到条目ponint,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教程后创建了proyect,模板也添加了这个文件:
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。
缺少什么?
感谢您的帮助。
答案 0 :(得分:2)
regsvr32仅用于ActiveX / COM服务器。您的DLL不是COM服务器,因此首先为您的DLL调用regsvr32是没有意义的,因为没有任何注册/取消注册。