<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=P%2FInvoke</id>
	<title>P/Invoke - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=P%2FInvoke"/>
	<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=P/Invoke&amp;action=history"/>
	<updated>2026-06-04T19:52:33Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://monobook.org/w/index.php?title=P/Invoke&amp;diff=8436&amp;oldid=prev</id>
		<title>108.162.226.161: ページの作成:「P/Invoke（語源：Platform Invoke）とは、.NET Frameworkにおける共通言語基盤 (CLI) の機能の一つで、マネージコードから動...」</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=P/Invoke&amp;diff=8436&amp;oldid=prev"/>
		<updated>2016-12-06T07:10:13Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「P/Invoke（語源：Platform Invoke）とは、&lt;a href=&quot;/w/index.php?title=.NET_Framework%E3%81%AB&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;「.NET Frameworkに」 (存在しないページ)&quot;&gt;.NET Frameworkに&lt;/a&gt;おける&lt;a href=&quot;/wiki/%E5%85%B1%E9%80%9A%E8%A8%80%E8%AA%9E%E5%9F%BA%E7%9B%A4&quot; title=&quot;共通言語基盤&quot;&gt;共通言語基盤&lt;/a&gt; (&lt;a href=&quot;/wiki/CLI&quot; class=&quot;mw-redirect&quot; title=&quot;CLI&quot;&gt;CLI&lt;/a&gt;) の機能の一つで、&lt;a href=&quot;/wiki/%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%BC%E3%83%89&quot; class=&quot;mw-redirect&quot; title=&quot;マネージコード&quot;&gt;マネージコード&lt;/a&gt;から動...」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;P/Invoke（語源：Platform Invoke）とは、[[.NET Frameworkに]]おける[[共通言語基盤]] ([[CLI]]) の機能の一つで、[[マネージコード]]から[[動的ライブラリ]]内の[[ネイティブコード]]を呼び出すことを可能にするものである。受け渡しされるデータ型は、必要であればCLIによって適切に変換されるが、[[メタデータ]]によって[[プログラマー]]が明示的に変換方法を指定することもできる。こうした[[データ]]の変換を[[マーシャリング]]という。&lt;br /&gt;
&lt;br /&gt;
== 概要 ==&lt;br /&gt;
大雑把にいえばC#からCで書かれたライブラリの関数を呼び出せる。&lt;br /&gt;
いってみればJavaのJNIとほとんど同じだな。&lt;br /&gt;
だがJavaより遥かに簡潔明瞭に書ける。&lt;br /&gt;
マネージコードからネイティブコードへは適切に切り替えられるためunsafeは不要である。&lt;br /&gt;
&lt;br /&gt;
重い処理を部分的にネイティブコードで書いて加速を目論む用途などで使われるが、P/Invokeの呼び出し（マネージコードとネイティブコードの切り替え）が絶望的なほど遅いので頻繁に呼ぶと逆に遅くなるパターンも多い。これもJavaのJNIと同じだな。&lt;br /&gt;
&lt;br /&gt;
[[Xamarin]]などでは標準対応されていない[[OS]]の標準ライブラリを叩くのにも活躍する。&lt;br /&gt;
* [[Xamarin.Mac/OSのバージョンを取得する]]&lt;br /&gt;
* [[Xamarin.Mac/ウインドウの一覧を取得する]]&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[マネージドコード]] &lt;br /&gt;
* [[アンマネージドコード]] &lt;br /&gt;
* [[ネイティブコード]]&lt;br /&gt;
* [[CSharp-SQLite]] &lt;br /&gt;
* [[NeoLua]]&lt;br /&gt;
&lt;br /&gt;
== 外部リンク ==&lt;br /&gt;
* [http://www.pinvoke.net/ PInvoke.net] - Win32APIをはじめとしたアンマネージAPIのP/Invoke宣言を集めたデータベースサイト。&lt;br /&gt;
* [http://msdn2.microsoft.com/ja-jp/library/sd10k43k(VS.80).aspx アンマネージ コードとの相互運用] - MSDN2&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>108.162.226.161</name></author>
	</entry>
</feed>