使用regsvr32时,在windows dll中找不到入口点

时间:2012-03-26 18:14:02

标签: c++ c visual-c++ dll

我正在尝试在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。

缺少什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

regsvr32仅用于ActiveX / COM服务器。您的DLL不是COM服务器,因此首先为您的DLL调用regsvr32是没有意义的,因为没有任何注册/取消注册。