【プログラミング】PythonのライブラリがCとC++で書かれてるというのなら

記事サムネイル
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
またネガキャンやっているのか
やめてほしいな

コメント

タイトルとURLをコピーしました