Visual C++ express 2008でDLLを作成しようとしています。私のDLL proyectはうまくコンパイルされ、* .dllが作成されます。しかし、regsvr32に登録しようとすると、次のエラーメッセージが表示されます。regsvr32を使用しているときにWindows DLLにエントリポイントが見つかりません
"name.dllモジュールがロードされましたが、エントリponintが見つかりませんでした.DllUnregisterServer"(メッセージは、私のスペイン語バージョンのWindowsから翻訳しています)。
私はWindows 7 64ビットO.Sを使用しています。
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
:しかし、私は彼女がコードです... * .dllは理由のVisual C++ Expressが私のバージョンの32ビットで作成されたと思います
#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
FASとして// 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ファイルを登録することはできません。
何かが欠けていますか?
ありがとうございました。
あなたの答えをありがとう。私は、次の "Regsvr32ツール(regsvr32.exe)を使用してCOM DLLを登録または登録解除するには、msdnオンラインドキュメントを読んでいます。"ですから、この種の「C/C++ DLL」はCOMとは異なりますか? – user1274605
COMは言語ではなく、フレームワークです。 「コンポーネントオブジェクトモデル」(http://msdn.microsoft.com/en-us/library/ms680573.aspxを参照)の略です。あなたが書いたようなプレーンな普通のC/C++ DLLはCOM DLLではありませんが、使用していないATLフレームワークを使ってプレーンC/C++でCOM DLLを書くことができます。最初にDLLを登録しようとしているのはなぜですか?どのような目的のために? –
これは、Progress 4GLアプリケーションで使用されるはずのテスト用DLLであり、Progress開発者は、DLLを使用して登録する必要があると私に言いました。だから私はこの部分もテストしていました。 – user1274605