C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: DLLのインポートについて教えてください。


(過去ログ 22 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■9667 / inTopicNo.1)  DLLのインポートについて教えてください。
  
□投稿者/ ましゃまる (1回)-(2007/11/01(Thu) 20:39:03)

分類:[C#] 

初めて質問する、ましゃまると申します。
色々、調べてみたのですが、よくわかりませんでした。

開発環境:
OS Windows VISTA(64ビット)
VisualStudio2005

現在、VC++2003で作成されたdllを、VB6.0から呼出しているプログラムを、
64ビットVISTA化する作業を行っています。

それに伴い、DLLは VC++2005で作成しなおし、VC#2005から呼出すことになりました。

ちゃんと、DLLが呼出せるかというテストを行ったところ、BadImageFormatExceptionがスローされてそこで行き詰ってしまいました。

dllのコード

_declspec(dllexport) long _stdcall dllSample()
{
return 1;
}


C#のコード

using System;
using System.Runtime.InteropServices;

namespace TEST
{
class DllTest
{
[DllImport("DllTest.dll", EntryPoint="dllSample")]
public static extern long dllSample();

public long dllSampleTest()
{
long ret=dllSample();//*ここでBadImageFormatExceptionがスローされます。
return ret;
}
}
}

ただ、DLLを呼出すことが出来るかどうかのテストで、こんな感じで作ってみたのですが、
dllSampleを呼んだ段階で、BadImageFormatExceptionがスローされます。

DLLの場所は正しく、DefファイルにDllSampleとエントリーしています。

user32.dllにあるようなAPIは同じようにして呼出せたのですが、どうしても、作成したdllが呼出せません。


お手数をおかけいたしますが、教えていただけないでしょうか。
よろしくお願いします。

ましゃまる
引用返信 編集キー/
■9668 / inTopicNo.2)  Re[1]: DLLのインポートについて教えてください。
□投稿者/ Hongliang (207回)-(2007/11/01(Thu) 21:53:15)
Hongliang さんの Web サイト
その DLL は 32bit 用の cl.exe でコンパイルされていませんか?
64bit プロセスで 32bit DLL をロードすることはできませんよ。
http://msdn2.microsoft.com/ja-jp/library/x4d2c09s(VS.80).aspx
引用返信 編集キー/
■9681 / inTopicNo.3)  Re[2]: DLLのインポートについて教えてください。
□投稿者/ ましゃまる (2回)-(2007/11/02(Fri) 09:14:43)
Hongliang 様、ありがとうございます。

> その DLL は 32bit 用の cl.exe でコンパイルされていませんか?
> 64bit プロセスで 32bit DLL をロードすることはできませんよ。

ご指摘のとおりでした。64bitでコンパイルしたつもりでしたが、できていなかった様です。
教えていただいたサイトを見て、確認していったところ、解決できました。

本当にありがとうございました。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -