忍者ブログ
メモ、備忘録、その他雑記を記載します。 ただし、このHPに記載している情報を利用した結果 損失・損害等が発生したとしても筆者は責任を持ちません。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

 

 VC6のDLL作成方法です。
 
1.ファイル→新規作成→プロジェクトで以下を選択
 MFC AppWizard (dll)
 ※ここではプロジェクト名を仮に「SampleDll」とする。
 
 
MFC AppWizard - ステップ1 / 1の「作成する DLL の種類」で以下を選択
 MFC の拡張 DLL (MFC の共有 DLL 使用)(E)
 ※これでMFC AppWizardを終了する。
 
 
2.関数の実装
 int WINAPI Test();
 
 int WINAPI Test()
 {
  AfxMessageBox(_T("DLL内関数テスト"));
  return 0;
 }
 
 
3.def.ファイルの修正
 
; SampleDll.def : DLL 用のモジュール パラメータ宣言
 
LIBRARY      "SampleDll"
DESCRIPTION  'SampleDll Windows Dynamic Link Library'
 
EXPORTS
    ; 明示的なエクスポートはここへ記述できます
 Test @1 
 
 
 
※補足
2.関数の実装は、以下のように記載してもよい。
そうすると、3.def.ファイルの修正の手順は必要なくなる。
 
extern "C" __declspec(dllexport) int Test();
 
extern "C" __declspec(dllexport) int Test()
{
 AfxMessageBox(_T("DLL内関数テスト"));
 return 0;
}
 
 
実際の記載例は以下(DLLを暗黙的に使用する場合)
●DLL作成プロジェクト
・DLL関数ヘッダファイル
#ifdef DLL_EXPORT
#define DLL_DECLSPEC __declspec(dllexport)
#else
#define DLL_DECLSPEC __declspec(dllimport)
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
 
  DLL_DECLSPEC int Test();
 
  #ifdef __cplusplus
}
#endif
 
・DLL関数CPPファイル
int Test()
{
AfxMessageBox(_T("DLL内関数テスト"));
return 0;
}
 
・StdAfx.h
#define DLL_EXPORT
 
●DLL呼出プロジェクト
#include "Xxx.h"   // DLL関数ヘッダファイルのインクルード
extern "C" {
#pragma comment( lib, "Sample.lib" ) // DLLのlibファイル
}
 
Test();
 

拍手[0回]

PR

C#でテキストファイルを読み込むサンプルです。


using System.IO;

    string str;
    try
    {
        using (StreamReader sr = new StreamReader("test.txt", Encoding.GetEncoding("Shift_JIS")))
        {
            for (; ; )
            {
                str = sr.ReadLine();
                if (str == null)
                {
                    break;
                }
                // 読み込んだ1行分の文字列に対する任意の処理
            }
        }
    }
    catch (Exception ex)
    {
        // ファイルがない場合、他例外発生の場合
    }
 

拍手[0回]

javaのsocket通信 サーバプログラムのサンプルです。

関連:クライアントプログラムサンプル

import java.io.*;
import java.net.*;

/**
 * サーバクラス
 *
 * @author
 * @version 1.0
 */
public class Sv {

    static final String strHowTo = "help: java Sv port";

    /**
     * スタートアップ
     */
    public static void main(String[] args) {

        // 引数チェック
        if (args.length != 1) {
            System.err.println( strHowTo );
            return;
        }

        try {
            // サーバソケットの作成
            ServerSocket svsock = new ServerSocket(Integer.parseInt(args[0]));
            svsock.setSoTimeout( 1000 );
            int nCnt = 0;

            // メインルーチン
            Socket sock = null;
            for (;;) {
                // 終了判定
            //    if ( nCnt > 5 ) {
            //        break;
            //    }

                // クライアントからの接続を受け付ける。
                try {
                    sock = svsock.accept();
                }
                catch( SocketTimeoutException e ) {
                    continue;
                }
                nCnt++;

                sock.setTcpNoDelay( true );
                System.out.println("accept");

                // クライアントとの入出力部分はスレッドとして起動する。
                new ThreadCmdRes( sock ).start();
                System.out.println("Waiting for New Connection...");
            }
        }
        catch( SocketException e ) {
            System.err.println("Socket Error!");
            e.printStackTrace();
        }
        catch( IOException e ) {
            System.err.println("IO Error!");
            e.printStackTrace();
        }
        catch (Exception e) {
            System.err.println("Error!");
            e.printStackTrace();
        }
    }
}

/**
 * コマレス処理スレッドクラス
 *
 * @author
 * @version 1.0
 */
class ThreadCmdRes extends Thread {

    private Socket socket = null;

    /**
     * コンストラクタ
     * @param sock クライアントと接続済みのソケットを渡す。
     */
    public ThreadCmdRes(Socket sock) {
        this.socket = sock;
    }

    /**
     * ファイナライザ
     * 念のためソケットの破棄を行っている。
     */
    protected void finalize() {
        try {
            socket.close();
        } catch (Exception e) {}
    }

    public void run() {
        try {
            // 文字列受信処理
            InputStream is = socket.getInputStream();
            BufferedReader bufreader
              = new BufferedReader(
                    new InputStreamReader( is ) );
            System.out.println("入力ストリーム取得");

            // 入力されるまで待つ
            while ( is.available() == 0 ) {
                Thread.sleep( 10 );
                continue;
            }

            String line = null;
            line = bufreader.readLine();
            System.out.println( line );
            System.out.println("文字列受信処理");

            // メッセージ送信
            BufferedWriter bufwriter
              = new BufferedWriter(
                  new OutputStreamWriter( socket.getOutputStream() ) );
            bufwriter.write( "Send sv -> cl" );
            bufwriter.newLine();
            bufwriter.flush();
            System.out.println( "文字列送信処理" );

            // 後処理
            bufreader.close();
            bufwriter.close();
            socket.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

拍手[0回]

javaのsocket通信 クライアントプログラムのサンプルです。

関連:サーバプログラムサンプル

import java.io.*;
import java.net.*;

/**
 * クライアントクラス
 *
 * @author
 * @version 1.0
 */
public class Cl {

    static final String strHowTo = "help: java Cl host port";

    /**
     * スタートアップ
     */
    public static void main(String[] args) {

        // 引数チェック
        if (args.length != 2) {
            System.err.println( strHowTo );
            return;
        }

        try {
            // ソケットを作成してサーバに接続する。
            Socket socket = null;
            try {
                socket = new Socket(args[0], Integer.parseInt(args[1]));
            } catch (ConnectException e) {
                System.out.println("connectできませんでした");
                return;
            }
            System.out.println("socket生成");
            socket.setTcpNoDelay(true);

            // メッセージ送信
            BufferedWriter bufwriter = new BufferedWriter(
                    new OutputStreamWriter(socket.getOutputStream()));
            bufwriter.write("Send cl -> sv");
            bufwriter.newLine();
            bufwriter.flush();
            System.out.println("文字列送信処理");

            // 文字列受信処理
            InputStream is = socket.getInputStream();
            BufferedReader bufreader
                = new BufferedReader(
                    new InputStreamReader(is));
            System.out.println("入力ストリーム取得");

            // 入力されるまで待つ
            while (is.available() == 0) {
                Thread.sleep(10);
                continue;
            }

            String line = null;
            line = bufreader.readLine();
            System.out.println(line);
            System.out.println("文字列受信処理");

            // 後処理
            bufreader.close();
            bufwriter.close();
            socket.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


拍手[0回]

javaでプロパティファイルを読み込む処理です。
 

import java.util.Properties;
import java.util.Enumeration;
import java.io.*;


public class Main {

 public static void main( String[] strArg ) {

  try {
   Properties prop = new Properties();
   Reader r = new InputStreamReader(Main.class.getResourceAsStream("setting.properties"));
   prop.load( r );

   // キー一覧表示
   Enumeration e = prop.propertyNames();
   while( e.hasMoreElements()) {
    System.out.println( "キー:" + e.nextElement());
   }

   // キーに対応した値表示
   System.out.println( "キー:" + prop.getProperty("123"));
   System.out.println( "キー:" + prop.getProperty("456"));
   System.out.println( "キー:" + prop.getProperty("789"));

  } catch (Exception e) {
   System.out.println("Exception:" + e);
  }
 
  return;
 }

 void Main() {
 }
}

setting.propatiesの内容
123 = 11111
456 = 22222
789 = 33333

 

拍手[0回]

2  3  4  5  6  7  8  9 
Admin / Write
カレンダー
03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
Ace
性別:
非公開
バーコード
ブログ内検索
P R
忍者アナライズ
忍者ブログ [PR]