C/C++ (VC.NET)

【C++/CLI】 C++ / CLI ~ 入門編 / C# から C++ / CLI のDLL を呼び出す ~

■ はじめに https://blogs.yahoo.co.jp/dk521123/38070421.html に記載したが、C++のDLLファイルを参照追加した際に エラー「' XXX.dll' への参照を追加できませんでした。・・・」が表示された。 対応するために、C++ / CLI が必要そうだったので、調べてみ…

【Java】【C】【C++】 JNR ~ 入門編 ~

■ はじめに https://blogs.yahoo.co.jp/dk521123/36187289.html で、JNA(Java Native Access)を使って、JavaからC/C++コードを呼び出した。 しかし、JNR (Java Native Runtime)ってのもあるらしいので、簡単に調べてみた。 ■ JNR (Java Native Runtime)と…

【Java】【C】【C++】 JNA [3] ~ あれこれ編 ~

■ 数値の参照渡しを行うには... * ByteByReference/DoubleByReference/IntByReference/FloatByReference/LongByReference/ShortByReference を使用し、値を「getValue()」で取得する サンプル C側 // SampleDemo.c (「gcc -fPIC -shared -o libSampleDemo.so…

【Java】【C】【C++】 JNA [2] ~ 基本編 ~

■ はじめに https://blogs.yahoo.co.jp/dk521123/36187289.html の続き。 C言語の構造体をやり取りを扱う。 ■ サンプル 環境 * OS : CentOS7 * Java : JDK 1.8.0_133 * JNA : Version 4.4.0 C側 Sample.c #include <stdio.h> #include <stdlib.h> typedef struct { long id; cha</stdlib.h></stdio.h>…

【C#】【C++】C# から C++ のDLL を呼び出す (C# =&gt; C++)

■ サンプル 動作環境 * Visual Studio 2017 C++側 * [Win32プロジェクト]で、「アプリケーションの種類」を[DLL]を選択する * プロジェクト名を「demodll」にし、DLL名を「demodll.dll」にする demodll.h #pragma once extern "C" { __declspec(dllexport) i…

【Java】【C】【C++】 JNA [1] ~ 入門編 ~

■ はじめに https://blogs.yahoo.co.jp/dk521123/33062191.html で、JNI(Java Native Interface)を使って、JavaからC/C++コードを呼び出した。 しかし、もっと簡単な方法として、JNA (Java Native Access)があるので、纏める ■ JNA (Java Native Access)と…

【Java】【C】【C++】 JNI ~ C++ から Java のソースを呼び出す ~

■ はじめに http://blogs.yahoo.co.jp/dk521123/33062191.html で、Java => C++ をやったので、特に必要なかったが、逆もやってみようと。 で、結構、はまったので、メモ。 ■ 作成環境 * WindowsXP * Eclipse * Visual Studio C++ 2008 Express ■ 作成手順 1…

【Java】【C】【C++】 JNI ~ Java から C++ のソースを呼び出す ~

■ はじめに * Java から C++ のソースを呼び出すために、JNI(Java Native Interface)を使う 補足:JNA (Java Native Access) * Java から C++ のソースを呼び出すだけであれば、以下の関連記事のJNAの方がよさそう。 https://blogs.yahoo.co.jp/dk521123/361…

【C++】継承

クラスの継承 特徴 * C++にはインターフェースクラスはない => インターフェースクラスを表現したい場合、抽象クラスを使う * C++には多重継承が可能 構文 class クラス名 : public 基底クラス名 { 追加の宣言 } サンプル Person.h 基底クラス #ifndef Perso…

【C++】テンプレート(template) ~&lt;T&gt;型 / クラスやメソッドを汎用的に使えるようにする~

テンプレート(template) * Java/C# のジェネリック(下記の関連記事を参照のこと)のようなことができる。 構文 Pattern1 template <class type> function-declarator 例 template<class T> void sample(T value); Pattern2 template <typename type> function-declarator 例 template<typename T> void sam</typename></typename></class></class>…

【C++】【C++/CLI】文字列の扱い

= ■ C++標準 / std::string == * std::string * 実体は「typedef basic_string<char> string;」 * 「using namespace std;」を定義しておくと便利 * std::wstring :ワイド文字(1文字表現するのに2バイト用いる文字)に対応したワイド文字列を扱う ※ ワイド文字自</char>…

【C++】クラス

クラスの作成方法 クラスを定義するキーワードには、以下の2通りある。 [1] class [2] struct ※ classを使って定義したクラスのメンバは、既定でprivateで、 structを使って定義したクラスのメンバは、public。 構文 class クラス名 { アクセス修飾子: 型 変…

【C++】Iterator (イテレータ)

サンプル SampleCpp.cpp #include "stdafx.h" #include <string> #include <list> #include <iostream> #include <sstream> using namespace std; using namespace System; // 構造体 typedef struct { double hight; double weight; } Size; typedef struct { long id; string name; char sex</sstream></iostream></list></string>…

【VC++】別プロジェクトのLibファイルを使用するには...

手順 [1] ソリューションを右クリックし、[追加]-[新しいプロジェクト]-[Win32]-[Win32 コンソール アプリケーション]を選択 [2] 「アプリケーションの種類:スタティック ライブラリ」、「追加のオプション:プリコンパイル済みヘッダー」を選択し、「完了…

【VC++】VS2008 C++ で 64ビット 対応の環境を作成する

■ 準備 【1】Visual C++ 2008 Express Edition をインストール と 登録を行う ダウンロード先 http://go.microsoft.com/?LinkId=9348304 【2】Windows SDK をインストール * isoファイルなので、展開できるソフトを事前に落としておくといい http://blogs.ya…

【C】ポインタ

■ 関数ポインタ Syntax [戻り値のデータ型] (* ポインタ名) (引数のリスト) サンプル int demo(into num) { return (num < 0 ? -num : num); } int main(void) { int (*p)(int num); p = demo; int ans = (*p)(-100); printf("Ans = %d\n", ans); return 0; …