タグ

2016年6月15日のブックマーク (3件)

  • Visual C++でのDLLの一般的な作成方法(暗黙的リンク) - Gobble up pudding

    2016年02月07日更新 https://msdn.microsoft.com/library/81h27t8c(v=vs.110).aspx によるとメンバーに対してdllexportはだめらしいので追記。 また、main側サンプルコードが中途半端だったので、C++03以前で書きました。古い環境で開発せざるを得ないこともあるので 今回はVisual C++でのDLLの一般的な作成方法についての記事です。 DLLの作成方法や使い方にはいくつか方法がありますがもっとも一般的なのを紹介します。 Windowsでgcc以外でダイナミックリンクライブラリを作ろうとするとわりと面倒です。 今回は暗黙のリンクと呼ばれる方法と実装を説明します。 ※ただしこの方法は個人だけで開発する場合だったり規模が小さい場合だったりの場合で、明示的リンクのほうが適している状況もあります(後述)。 暗黙的リンクの概要

    Visual C++でのDLLの一般的な作成方法(暗黙的リンク) - Gobble up pudding
  • MFCからC#クラスライブラリを呼びたい

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 質問 2014年12月17日水曜日 7:51 C#からC;;クラスライブラリを呼びたい、この手の投稿はたくさんあるのですが、 今回は、その逆、MFC(アンマネージ)からC#のクラスライブラリを呼ぶ方法です。 知りたいのは、後述のWrapperとしてのMFCクラスライブラリ(DLL;アンマネージ)の作り方、実装内容です。 環境:VisualStudio2012Pro 作りたい最終の姿:MFCアプリ(アンマネージ)⇔MFCクラスライブラリ(DLL;アンマネージ)⇔C#クラスライブラリ(DLL;マネージ) →MFCアプリからMFCクラスライブラリDLL(Wrapper)を呼び、そこから、C#クラスライブラリの関数を

    MFCからC#クラスライブラリを呼びたい
  • unmanagedクラスにmanagedなメンバを持たせる - schima.hatenablog.com

    以下のコードはビルドできません。「マネージ 'hoge' をアンマネージ 'Native' で宣言できません。」というメッセージが出ます。 class Native { public: StringBuilder^ hoge; }; managedな変数hogeがGCによって移動された場合に、unmanagedなクラスではその追跡ができなくなるのが要因です。これを克服する方法を以下に書いていきます。 なお、ここでいうmanagedな変数とは、ref classです。型名の後ろに ^ が付くものです。 方法1 : ポインタで保持する GCで動かないよう固定するといえば、System::Runtime::InteropServices::GCHandleの出番です。 GCHandle::Alloc によってmanagedオブジェクトのハンドルを取得します。ハンドルはIntPtrに変換でき、また

    unmanagedクラスにmanagedなメンバを持たせる - schima.hatenablog.com