誰かがこのコードで私を助けることができますか?
.Dll で宣言したメソッドを使用したい...これらのメソッドのうち 2 つを使用できますが、そのうちの 1 つが多くの頭痛の種になっています...次のコードに従ってください。
main.h -> DLL
#ifndef _DLLTEST_H_
#define _DLLTEST_H_
#include <iostream>
#include <stdio.h>
#include <windows.h>
extern "C" __declspec(dllexport) void NumberList();
extern "C" __declspec(dllexport) void LetterList();
extern "C" __declspec(dllexport) int sumNumber(int, int);
#endif
main.cpp -> DLL
#include "main.h"
#define MAXMODULE 50
using namespace std;
char module[MAXMODULE];
extern "C" __declspec(dllexport)
void NumberList() {
GetModuleFileName(NULL, (LPTSTR)module, MAXMODULE);
cout << "\n\nThis function was called from "
<< module
<< endl << endl;
cout << "NumberList(): ";
for(int i=0; i<10; i++) {
cout << i << " ";
}
cout << endl << endl;
}
extern "C" __declspec(dllexport)
void LetterList() {
GetModuleFileName(NULL, (LPTSTR)module, MAXMODULE);
cout << "\n\nThis function was called from "
<< module
<< endl << endl;
cout << "LetterList(): ";
for(int i=0; i<26; i++) {
cout << char(97 + i) << " ";
}
cout << endl << endl;
}
extern "C" __declspec(dllexport)
int sumNumber(int i, int j) {
cout << "Number: " << i + j << endl;
return i+j;
}
.DLL のテスト
#define MAXMODULE 50
using namespace std;
typedef void (WINAPI*cfunc)();
cfunc NumberList;
cfunc LetterList;
cfunc sumNumber;
int main() {
HINSTANCE hLib=LoadLibrary("libCriandoDLL.dll");
if(hLib==NULL) {
cout << "Unable to load library!" << endl;
getch();
}
char mod[MAXMODULE];
GetModuleFileName((HMODULE)hLib, (LPTSTR)mod, MAXMODULE);
cout << "Library loaded: " << mod << endl;
NumberList=(cfunc)GetProcAddress((HMODULE)hLib, "NumberList");
LetterList=(cfunc)GetProcAddress((HMODULE)hLib, "LetterList");
sumNumber=(cfunc)GetProcAddress((HMODULE)hLib, "sumNumber");
if((NumberList==NULL) || (LetterList==NULL) || (sumNumber==NULL)) {
cout << "Unable to load function(s)." << endl;
FreeLibrary((HMODULE)hLib);
}
NumberList();
LetterList();
sumNumber(1,1);
FreeLibrary((HMODULE)hLib);
getch();
}
メソッド「NumberList();」および「LetterList ();」完全に動作します...ただし、メソッド「sumNumber (1.1)」を使用しようとすると、「エラー: 機能する引数が多すぎます」というエラーが表示されます。