我正在尝试在Visual C++ Express2008中创建一个DLL。我的DLL proyect编译得很好,并且创建了*.dll。但是,当我尝试向regsvr32注册它时,我得到了以下错误消息:
“name.dll模块已加载,但未找到入口ponint,DllUnregisterServer”(消息类似于此,我正在将其从我的西班牙语版本翻译过来)。
我使用的是Windows764位操作系统,但我认为*.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);
}
#endifDLL.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。
是不是少了点什么?
谢谢你的帮助。
发布于 2012-03-27 02:35:31
regsvr32仅用于ActiveX/COM服务器。您的动态链接库不是COM服务器,因此一开始就没有必要为您的动态链接库调用regsvr32,因为没有什么需要注册/注销的。
https://stackoverflow.com/questions/9877434
复制相似问题