2016-06-01 6 views
0

私はC++ではありません。私は私の修士論文と主にプログラミングをしています。最後に4つのDLLと1つのexeが存在します。
私はいくつかのものを探そうとしました。どのようにDLLやものをコンパイルし、 "テンプレート"からdllを作成しましたか?さて、問題は:どのように私は動的にdppをパラメータでcppから呼び出すのですか?C++ CPPパラメータを使用してDLLを動的に呼び出す

これは(主にhereから)私のコードです:呼び出される

#include <cstdlib> 
#include <sstream> 
#include <string> 
#include <iostream> 
#include <stdio.h> 
#include <windows.h> 
#include <stdexcept> 

typedef VOID (*DLLPROC) (LPTSTR); 

HINSTANCE hinstDLL; 
DLLPROC HelloWorld; 
BOOL fFreeDLL; 

hinstDLL = LoadLibrary("Test-DLL.dll"); 

if (hinstDLL != NULL) 
{ 
    HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "hello"); 

    if (HelloWorld != NULL) 
     (HelloWorld); 

    fFreeDLL = FreeLibrary(hinstDLL); 
} 

機能がhello(const char *s)です。 *sをdllに渡すにはどうすればよいですか?

+0

'const char * msg ="私のメッセージ "; HelloWorld(msg); ' – user1810087

答えて

0

typedef VOID(* DLLPROC)(LPTSTR);期待している関数のシグネチャです - おそらくあなたのケースにあるはずです。

typedef VOID(* DLLPROC)(const char *);

最初の項目は関数の戻り値の型です。最初の括弧の内容は呼び出したいものです。 2番目の括弧の内容は引数です。

HelloWorldは、構文上、dllへの関数ポインタです。関数を呼び出すことは、静的にコンパイルされたライブラリ関数を呼び出すことと同じです。したがって、あなたは単に引数 "dave"を使って関数を呼び出すことができます。

HelloWorld( "dave")

あなたは、例えば https://msdn.microsoft.com/en-us/library/64tkc9y5.aspx

で簡単に見を持っているしたい場合があります。

+0

ありがとうございます - 私のためにフォーマットされているchar *によってキャッチされました! – UKMonkey

関連する問題