こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C#からDLLの呼び出し方

visual studio 2008 express edition
C#3.5
を使用しています。

http://www.hata.cc/docs/wlinee/1.html
を参考にC++からではMySub関数を呼び出すことができたのですが、
C#から呼び出そうと次のように記述したのですが、

[System.Runtime.InteropServices.DllImport("a.dll")]
extern int WINAPI MySub(int a, int b);

書き終わったときに、MySubの下に赤線がでて「;が必要です」
というエラーが出てしまいます・・・
たぶん「WINAPI」が認識されてないと思うのですが、
どのように記述すればよいのでしょうか?

~C++での記述~
[dllcall.cpp]
#include "stdafx.h"
#include <windows.h>
#include <conio.h>  // getch( ) を使用するのに必要

extern int WINAPI MySub(int a, int b);
int _tmain(int argc, _TCHAR* argv[])
{
int c;

c=MySub(9, 3);
printf("ans=%d\n",c);
getch();// キーが押されるまで待つ

return 0;
}

[a.cpp]
__declspec(dllexport)int WINAPI MySub(int a, int b)
{
return a-b;
}

投稿日時 - 2009-04-08 03:39:30

QNo.4861970

すぐに回答ほしいです

質問者が選んだベストアンサー

C#では,WINAPIマクロは存在しません (呼び出し規約はDllImportで指定します)。

> [System.Runtime.InteropServices.DllImport("a.dll")]
> extern int WINAPI MySub(int a, int b);
ではなく,
[System.Runtime.InteropServices.DllImport("a.dll")]
static extern int MySub (int a, int b);
のようになります。

投稿日時 - 2009-04-08 04:17:32

お礼

ご返答ありがとうございます。
参考になりました。

投稿日時 - 2009-04-08 16:56:40

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問