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

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

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

Re[1]: dllとは


(過去ログ 139 を表示中)

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

■81936 / inTopicNo.1)  dllとは
  
□投稿者/ がちゃぴん (1回)-(2016/11/24(Thu) 17:37:18)

分類:[.NET 全般] 

お世話になります。

環境:OS→ Win7 Pro 64bit
   IDE→ VS2015 Pro(試用版)

初歩的な質問ですみません。
C++以外の言語でDLLは作れないのでしょうか?

言い方を変えて、C#でWin32用のdllは作成できないのでしょうか?

また、Win64.dllってものは存在しないのでしょうか?

よろしくお願いいたします。
引用返信 編集キー/
■81941 / inTopicNo.2)  Re[1]: dllとは
□投稿者/ Jitta (222回)-(2016/11/24(Thu) 18:23:07)
No81936 (がちゃぴん さん) に返信
> お世話になります。
>
> 環境:OS→ Win7 Pro 64bit
>    IDE→ VS2015 Pro(試用版)
>
> 初歩的な質問ですみません。
> C++以外の言語でDLLは作れないのでしょうか?
>
> 言い方を変えて、C#でWin32用のdllは作成できないのでしょうか?

C/C++から呼び出すことのできるDLLという意味では、
出来ないことはないけど難しい。


> また、Win64.dllってものは存在しないのでしょうか?

どういう意味でしょう?
引用返信 編集キー/
■81945 / inTopicNo.3)  Re[1]: dllとは
□投稿者/ 魔界の仮面弁士 (985回)-(2016/11/24(Thu) 18:47:42)
No81936 (がちゃぴん さん) に返信
> C++以外の言語でDLLは作れないのでしょうか?

どの環境のどの言語から利用する DLL を作成したいのでしょうか。
言語によって、呼び出せる DLL の種類が異なります。

たとえば VB6 の Declare で呼べる物は、StdCall 規約の物に限定されています。
(トリッキーな方法で、cdecl なものを呼び出せるケースもありますが)
https://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84

COM 公開する方法にしても、VARIANT ベースでしか呼び出せないものや、
64bit 整数型や構造体などの利用に制限がある開発言語などがありますので、、
DLL の作成側も、それらを考慮した設計にする必要があります。

もしも C++ からの利用なら、C++ 側を C++/CLI に変更するのが一つの道でしょう。
あるいは C# 側を COM 公開するという手もあります。


あとはこのあたり。
http://www.codeproject.com/Articles/37675/Simple-Method-of-DLL-Export-without-C-CLI
https://www.nuget.org/packages/UnmanagedExports
https://blogs.msdn.microsoft.com/rodneyviana/2015/08/24/pure-native-c-consuming-net-classes-without-com-registration/
https://www.mql5.com/ja/articles/249



> また、Win64.dllってものは存在しないのでしょうか?
質問の意図が分からなかったのですが、とりあえず
Win64 API を提供している DLL は存在しますし、
Win64.dll という名前のファイルを作る事もできます。

引用返信 編集キー/
■81947 / inTopicNo.4)  Re[1]: dllとは
□投稿者/ とっちゃん (408回)-(2016/11/24(Thu) 18:59:33)
No81936 (がちゃぴん さん) に返信
> C++以外の言語でDLLは作れないのでしょうか?
>
> 言い方を変えて、C#でWin32用のdllは作成できないのでしょうか?
>
Win32用というのが、C/C++ でつくったexe からという意味だとすると
そのままでも不可能ではありませんが、LoadLibraryすればなんてレベルではなく
呪術的なコードを書かないといけないので、あまりお勧めできません。

なので、その場合は、C++ のプロジェクトを C++/CLI 形式にして(プロジェクトの設定で行えます)
そこから、C# のWin32用(x86と表記されます)のDLLを作成します。

> また、Win64.dllってものは存在しないのでしょうか?
>
VS では、Win64 とは表記せず、x64 となります。
これは、その昔IA64という64bitアーキテクチャがあったころの名残です(今はサポートしていません)。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -