2016-05-24 11 views
0

私は共有mfc dllで通常のdllを持っています。それはvC++ 6.0上で構築されました。私はvC++ 2008のウィンドウでapplication.itにヘッダファイル、libとdllを持っています。 私はこのヘッダーを追加すると、私は共有mfc dllで通常のdllを使用する

#ifdef DLLBUILD 
    #define DLLFUNC extern "C" __declspec(dllexport) WINAPI 
    #else 
    #define DLLFUNC extern "C" __declspec(dllimport) WINAPI 
    #endif 

    DLLFUNC int SC06StepInit(void) 

前記ヘッダファイルの一部の行を追加していて、同じタイプの複数のエラー

エラーC2144を示しています。構文エラー:「intは」 'によって先行されなければならないが; '
エラー C4430:型指定子がない - 想定されています。注:C++は、ラインDLLFUNC int SC06StepInit(void)からすべての行にエラースタートは同じ名前DLLFUNCを開始していない サポートデフォルト-INT

ありません。私は戻り値の型よりも名前を持つ関数を開始することは考えていません。

このDLLのソースコードも同じようにすべての機能を持っていました。

私は知りたいです。関数を定義するこの方法は、呼び出され、そのようなライブラリを使用します。

+1

'int DLLFUNC ...'を試してください - 順序を変更してください。私は型が呼び出し規約の前になければならないと確信しています。 –

+0

このDLLはいくつかのプログラムを使用しており、うまく機能しています。私はこのdllの開発者ではありません。私はそれを使いたい。私はこのフォーマットとそれを使う方法を知りたいです – user1244539

+0

あなたはヘッダファイルに「いくつかの行を追加しています」と、追加した行を正確に指すコンパイラエラーが発生しています。これらの行が構文的に間違っていることを示す良い表示ですが、そうではありませんか? –

答えて

0

これを試してみてください:

#ifdef DLLBUILD 
#define DLLFUNC extern "C" __declspec(dllexport) 
#else 
#define DLLFUNC extern "C" __declspec(dllimport) 
#endif 

DLLFUNC int SC06StepInit(void); 

あなたはマクロであまりをしようとしている。

  • にextern "C"
  • DLLのインポート/エクスポート属性
  • WINAPI仕様

Limそれです。関数のエクスポート方法と、DLLのクライアントが誰であるかを調べます。

+0

私は何かを明らかにする。私の質問に答えた人は、私がdllを開発していると思うかもしれませんが、そうではありません。私はこのライブラリのクライアントであり、このような構文が新しくて、それを使うことができません。 – user1244539

+0

あなたがクライアントである場合、誰がDLLを開発したかを尋ね、そのようなヘッダを与えました。彼らがあなたにヘッダーを与えていない場合は、Dependency Walkerを使用して、*関数がどのように見えるかを調べることができます* – Ajay

関連する問題