- 1 : 2024/11/07(木) 08:03:32.340 ID:EdZRW5XS0
- C#のDLLimportでよくね?
- 2 : 2024/11/07(木) 08:03:40.231 ID:EdZRW5XS0
- ってならんのかな?
- 5 : 2024/11/07(木) 08:05:17.600 ID:wVcPo5AFM
- stdcallなのか cdeclなのか
- 6 : 2024/11/07(木) 08:05:47.031 ID:EdZRW5XS0
- クロスプラットフォームにしたいなら
#if MACOS
#elif WINDOWS
#elif LINUX
#end if
でいいしさ - 8 : 2024/11/07(木) 08:06:48.525 ID:EdZRW5XS0
- DllImport は、C# や他の .NET 言語で、外部の DLL(ダイナミックリンクライブラリ)にある関数を利用するための属性です。この機能を使うことで、C++ などで記述されたネイティブコードを C# から呼び出すことができます。主に、既存のネイティブライブラリを再利用したい場合や、.NET の範囲外の低レベルな機能を利用したい場合に使用されます。
使い方は次の通りです:
using System;
using System.Runtime.InteropServices;class Program
{
// DllImport 属性で外部の DLL を指定
[DllImport(“user32.dll”, CharSet = CharSet.Auto)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);static void Main()
{
// ネイティブ関数を呼び出す
MessageBox(IntPtr.Zero, “Hello, World!”, “MessageBox”, 0);
}
}この例では、user32.dll にある MessageBox 関数を呼び出して、メッセージボックスを表示します。
DllImport の主要なパラメータ
Dll 名: 呼び出すライブラリの名前(例: “user32.dll”)。
CharSet: 文字列のマーシャリング(文字エンコーディング)方法を指定します(例: CharSet.Auto)。
EntryPoint: DLL 内の関数名を指定します。省略すると、メソッド名がそのまま使用されます。
この仕組みにより、.NET プラットフォームで直接サポートされていないネイティブコードを活用できます。
- 9 : 2024/11/07(木) 08:08:13.059 ID:wVcPo5AFM
- C#でPInvokeは好かない
- 12 : 2024/11/07(木) 08:09:53.214 ID:EdZRW5XS0
- >>9
じゃあなんでPythonは許されるの?
理由教えて - 15 : 2024/11/07(木) 08:11:05.324 ID:wVcPo5AFM
- >>12
それ前提のクソ言語だから - 16 : 2024/11/07(木) 08:11:41.483 ID:EdZRW5XS0
- >>15
ワロタw - 10 : 2024/11/07(木) 08:08:55.441 ID:mH+FC4210
- 使えるライブラリの方が重要だから
- 13 : 2024/11/07(木) 08:10:19.218 ID:EdZRW5XS0
- >>10
でもそれCとC++で書かれたプログラムだよね? - 18 : 2024/11/07(木) 08:13:14.146 ID:mH+FC4210
- >>13
手段は一緒でも誰かがより便利にしてくれてる方を使う方が楽じゃん - 22 : 2024/11/07(木) 08:17:00.713 ID:EdZRW5XS0
- >>18
低脳でワロタw - 32 : 2024/11/07(木) 08:24:57.766 ID:mH+FC4210
- >>22
そもそもDLLimport使うケースなんてウインドウズアプリとかじゃない?なんでPython関係させようとしてんの - 34 : 2024/11/07(木) 08:25:41.938 ID:EdZRW5XS0
- >>32
いやC++のプログラムをdll化したやつ全部使えるよDllimport - 11 : 2024/11/07(木) 08:09:24.168 ID:OxJLC4fIr
- お前はc#でいいと思うならc#使ってりゃ良くね?
pythonがいいと思ってる奴がpython使うだけなんだしさ - 14 : 2024/11/07(木) 08:10:31.571 ID:EdZRW5XS0
- >>11
なんでPythonのほうがいいの? - 17 : 2024/11/07(木) 08:13:00.023 ID:OxJLC4fIr
- >>14
pythonのがコーディング楽だと思ってるから - 21 : 2024/11/07(木) 08:16:39.782 ID:EdZRW5XS0
- >>17
さすがにそれは嘘 - 26 : 2024/11/07(木) 08:20:33.966 ID:OxJLC4fIr
- >>21
主観の話に嘘もクソもあるか - 19 : 2024/11/07(木) 08:13:15.131 ID:TH6hI58U0
- シーシャつかったは😢
- 23 : 2024/11/07(木) 08:17:09.005 ID:EdZRW5XS0
- >>19
いいね - 20 : 2024/11/07(木) 08:16:29.536 ID:EdZRW5XS0
- C#とか圧倒的な便利さからC#で書きたいとはなるけどPythonで書きたいとはならんくね?
- 24 : 2024/11/07(木) 08:17:51.371 ID:mEbRW0u3M
- >>20
venvで行列演算のAIライブラリがない - 25 : 2024/11/07(木) 08:18:59.450 ID:nLx/q/w+0
- そういう用途なら普通にPythonの方が使いやすい
C#はちょっと前までインターフェースがジェネリック演算子持てなくて、まともな数学系ライブラリ作れなかったからな
C#で書きたいとならないわけよ - 27 : 2024/11/07(木) 08:21:42.873 ID:EdZRW5XS0
- >>25
今は出来るが - 30 : 2024/11/07(木) 08:23:44.838 ID:nLx/q/w+0
- >>27
できない期間が10年以上あったからエコシステム面でPythonに遅れを取っている
今更使う意味がない
C#は今すぐPython捨てて乗り換えるほどの利便性はない - 33 : 2024/11/07(木) 08:25:04.742 ID:EdZRW5XS0
- >>30
SourceGenerator、NativeAOTが使える
C#はどんどん進化していってるよ - 28 : 2024/11/07(木) 08:22:57.558 ID:EdZRW5XS0
- async汚染がどうとか言ってるPythonが書きやすいとかあんの?
- 31 : 2024/11/07(木) 08:24:10.433 ID:EdZRW5XS0
- てかPythonってDllimportみたいなdllを使う便利機能ってあんの?
どうやってる? - 35 : 2024/11/07(木) 08:26:05.348 ID:nLx/q/w+0
- そもDLLImportみたいな機能ほとんどの言語が持ってると思うよ
これがあるからC#使おうとはならんw
もっと色んな言語覚えて用途によって使い分けられるようになろうなw - 37 : 2024/11/07(木) 08:26:31.343 ID:EdZRW5XS0
- >>35
だからPythonのやり方教えてよ - 40 : 2024/11/07(木) 08:28:21.885 ID:nLx/q/w+0
- >>37
ctypes.cdll.LoadLibraryでC#より短く書けるよ - 42 : 2024/11/07(木) 08:29:06.634 ID:EdZRW5XS0
- >>40
上のコードより? - 36 : 2024/11/07(木) 08:26:23.401 ID:TH6hI58U0
- dllのことわどぅるるっていってるは😢
- 38 : 2024/11/07(木) 08:26:48.157 ID:EdZRW5XS0
- >>36
ディルって言ってる - 39 : 2024/11/07(木) 08:28:09.809 ID:6gTtPDNv0
- 鬱陶しいなしかし
- 41 : 2024/11/07(木) 08:28:26.568 ID:3YalXUCS0
- またネガキャンやっているのか
やめてほしいな
コメント