質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

11536閲覧

DLLがC++、C#のどちらで作られているのかを確認したい

TakakiKuwabara

総合スコア38

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2017/09/19 14:05

編集2017/09/19 14:09

Pythonのctypesでとあるdllを使用できないか検討しています。
試しにctypesでいろいろいじってみているのですが、どうにもfunctionが呼び出せず困っています。
どうやらc#のdllはctypesからでは使用できないらしく、そもそもいま触っているdllがc++なのか、c#で作られているのかを調べたいと思っています。
一応Visual Studio 2017でdllを確認したところ、下記の情報が出てきました。

FILEVERSION 1, 3, 2, 1 PRODUCTVERSION 1, 3, 2, 1 FILEFLAGSMASK 0x3fL FILEFLAGS 0x0L FILEOS 0x4L FILETYPE VFT_DLL FILESUBTYPE VFT2_UNKNOWN

初歩的な質問かもしれませんが、わかる方がいらっしゃればお教えいただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Visual Studioをお使いならdumpbinコマンドでDLLの情報を取得できます。

.NET用のDLLかどうか知りたい場合は、

dumpbin /clrheader ファイルパス ```このように実行してください。`clr Header:`に続いて情報が表示されれば、それは.NETのクラスライブラリーです。 C/C++のDLLで中身の関数名が知りたいときは、

dumpbin /exports ファイルパス

他にも様々な情報を得ることができます。詳しくはマイクロソフトの「[DUMPBIN リファレンス](https://msdn.microsoft.com/ja-JP/library/c1h23y6c.aspx)」を参照してください。

投稿2017/09/19 14:57

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Packer Detectorを使うという方法もあります。

Q. Packer Detectorって何ですか?
A. exeやdllがどのpackerを使ってpackされたかを調べる時によく使うツールです。

Q. packerって何ですか?
A. exeやdllのファイルサイズを小さくしたり、難読化したりするアプリケーションの事です。
非常に強力な難読化、デバッガ対策を目的としてexeやdllを仮想化する物も存在しています。
https://github.com/rwfpl/rewolf-x86-virtualizer

C++の場合

.NETの場合

投稿2017/09/19 18:34

編集2017/09/19 18:49
aglkjggg

総合スコア769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そのDLLがNativeか.NETかを知りたいということであれば、一番手っ取り早いのはVSで適当に.NET系のプロジェクトを作って参照の追加でそのDLLを追加してみたらわかると思います。
あとはDependency Walkerで依存関係調べてMSCOREE.DLLに依存しているとか。

投稿2017/09/19 14:23

toki_td

総合スコア2850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakakiKuwabara

2017/09/19 14:32

参照の追加が出来ればC#のDLLということですか?
toki_td

2017/09/19 15:29

参照が追加出来るなら.NETのアセンブリかCOMライブラリで、プロパティのファイルの種類で「アセンブリ」って出てたら.NETのライブラリです。 普通のDLLの場合はエラーで参照に失敗します。 ctypeから使う場合は関数をエクスポートしているかも調べる必要があるのでDepndency Walkerかcatsforepawさんが言われているようにDUMPBINを使えばいいかと。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問