タグ

DLLに関するreboot_inのブックマーク (13)

  • LGPLライセンスのdllの二次配布について - OKWAVE

    このプログラムをインストーラ形式で配布する場合、上記のdllをインストーラに含めて配布しても問題ないでしょうか? →問題ありません また、ReadMeなどのテキストに特別な記述(LGPLライセンスの○○○.dllを使用している)が必要になりますか? →必要になります ・インストーラにLGPLライセンスのdllを含めて二次配布するのは可能 (商用利用も可能) →OK ・"A"のソースを公開する必要はない、"B"もソースの変更が無ければ公開する必要はない →OK ・ReadMeに"A"のリバース・エンジニア、逆コンパイル禁止の文面を記述できない →OK ・ReadMeに"B"を使用していることの記述が必要? <-- これがよくわかりません。 →ReadMeやプログラムのヘルプドキュメントなど、わかりやすい場所に「ソフトウェアは7-zip32.dllを使用しており、7-zip32.dllはLG

    LGPLライセンスのdllの二次配布について - OKWAVE
  • Electronで組み込み端末向けアプリケーションを開発し3年間運用してみて

    組み込み端末のアプリケーションに Electron を採用し開発・運用を行っています。 継続的な機能追加やトラブルサポートを行いながら 3 年が経過したので、Electron を採用した経緯や結果を経験を交えながら共有したいと思います。 組み込み案件自体が初めてでしたのでその話も入っています。 約 700 台ほど導入されており、なかなか大きな案件での採用と思いますので参考になれば幸いです。 ※Electron の基的な説明は割愛します。 システムについて 一般的に「受付精算機」などと呼ばれ、店頭に何台か並べて設置して自動で受付・精算を行うシステムです。 ホテルの受付端末のイメージです。ハード的にはセルフレジにも近いです。 筐体自体は他社が用意し、弊社はその上に載せる GUI アプリケーションのみを担当しました。 機能 主な機能として 来店受付・整理券発行 予約チェックイン チェックアウト

    Electronで組み込み端末向けアプリケーションを開発し3年間運用してみて
  • C++のマングルとextern "C" { - wagavulin's blog

    C++とCが混在したプログラムを書くとときどき定義したはずの関数がundefinedだと言われることがある。そんなときの対処法とマングルの話。 その前にまずはC言語だけの場合を考える。例えば以下のようなCのプログラムを書いてみる。 /* main.c */ #include "foo.h" int main(){ func1(); return 0; } /* foo.h */ #ifndef FOO_H void func1(); #endif /* foo.c */ #include "foo.h" #include <stdio.h> void func1(){ puts("ok"); } 見てのとおり、main.cはfunc1関数を呼び出しており、foo.cはfunc1関数を定義している。当然、main.cをコンパイルしてできたmain.oもfunc1を参照し、foo.cをコンパイ

    C++のマングルとextern "C" { - wagavulin's blog
  • Version 2.0 rc1 Unable to load DLL 'Cntk.Core.CSBinding-2.0rc1.dll' · Issue #1708 · microsoft/CNTK

    reboot_in
    reboot_in 2020/10/26
    “64ビットに加えて、PATHには、CNTKに必要なネイティブdllをホストするディレクトリを含める必要があります。1つの方法は、global.asaxのApplication_Start()メソッドに次のコードを追加することです。”
  • 【C++】C++で作成したDLLをC++で呼ぶ(静的) - Qiita

    ※1 関数のプロトタイプ宣言とLIBファイルの指定(コンパイラオプションでの指定または#pragma)のみで通常の関数の様に使える。 ※2 LIBファイル・ヘッダーファイルのないDLLに使用できる。 DLL側(C++) 以前の記事で書いたものと同じのを使う。 呼びだす側(C++) .libファイルの参照設定 まず、Dllと対になる.libファイルを参照するように設定追加する。 pjのプロパティ > リンカー > 入力 の、追加の依存ファイルに、必要な.lib(ここではDllTest.lib)を追加 pjのプロパティ > リンカー > 全般 の、追加のライブラリディレクトリに、その.libのあるフォルダを追加 ※libの設定は、コード中に#pragmaでも実施できる様子。(今回は試さず) 下記を参照。 http://yamatyuu.net/computer/program/sdk/base

    【C++】C++で作成したDLLをC++で呼ぶ(静的) - Qiita
    reboot_in
    reboot_in 2020/10/21
    “※libの設定は、コード中に#pragmaでも実施できる様子。(今回は試さず)”
  • [VC++] リンクするライブラリファイルをソースコード内に記述する | あみだがみねのもろもろ備忘録

    // sample.cpp #include <windows.h> int main() { MessageBox(0, "サンプル", "", MB_OK); return 0; } 上記のファイルをcl.exeを使ってビルドするには、コマンドラインから… cl smaple.cpp user32.lib と、いう風に、MessageBox APIが格納されているライブラリ(user32.lib)をリンカに教えてやる必要がある。 このライブラリの指定を、ソースコード内に書くことができる。 #pragma comment(lib, "ライブラリ名") としてやれば良い。 つまり… // sample.cpp #pragma comment(lib, "user32.lib") #include <windows.h> int main() { MessageBox(0, "サンプル",

    reboot_in
    reboot_in 2020/10/21
    “MessageBox APIが格納されているライブラリ(user32.lib)をリンカに教えてやる必要がある。 このライブラリの指定を、ソースコード内に書くことができる。 #pragma comment(lib, "ライブラリ名") としてやれば良い。”
  • DLLファイルからLIBファイルを作成する(_stdcall宣言)

    DLLロードの仕方には、静的リンク(暗黙的)と動的リンクがあります。 静的リンクの場合は、LIBファイルが必要となりますが、例えば文字コードの変換を行うMLANG.DLL等は、ヘッダーファイルは存在しますが、なぜかMLANG.LIBは存在しません。 LIBファイルがない場合は、DLLファイルからDEFファイルを作成し、DEFファイルをもとにLIB.EXEによりLIBファイルを作成することができます。 ただし、extern "C" _stdcallで定義されている関数の場合、 DEFファイルのみでLIB.EXEを使用して作成すると32bitの場合コンパイラの名前修飾規則とLIB.EXEの名前検索方法の指定が一致しないためリンクエラーか実行時にエラーが発生します。(Windows 64bitでは__stdcallは無視されるのでLIB.EXEのみで正常なLIBファイルを作成可能) 32bit

    reboot_in
    reboot_in 2020/10/21
    “LIBファイルがない場合は、DLLファイルからDEFファイルを作成し、DEFファイルをもとにLIB.EXEによりLIBファイルを作成することができます。”
  • How to use `/DELAYLOAD` on a DLL from another DLL

    reboot_in
    reboot_in 2020/10/21
    “DLLの最初の関数が呼び出されるとすぐに、アプリケーションがクラッシュします。 GetLastError()126が生成されます。これは、ターゲットDLLがどの検索パスでも見つからなかったことを意味しているようです。”
  • DLLの検索

    LoadLibraryにロードしたいDLLを指定するとき、 そのDLLの名前をフルパスで指定した場合は原則そのDLLがロードされることになりますが、 ファイル名だけを指定した場合は、いくつかのディレクトリを検索ディレクトリとして、 指定したファイル名が探されることになります。 次に、検索される順番を示します。 1, EXEファイルが含まれているディレクトリ 2, プロセスのカレントディレクトリ(又は、SetDllDirectoryで指定したパス) 3, Windowsシステムディレクトリ 4, Windowsディレクトリ 5, 環境変数PATHで指定されたディレクトリ なお、Windows XP以降では次のレジストリキーの値が1であるとき、 2のカレントディレクトリは3と4の後に検索されます。 HKLM\System\CurrentControlSet\Control\Session Ma

    reboot_in
    reboot_in 2020/10/21
    “ファイル名だけを指定した場合は、いくつかのディレクトリを検索ディレクトリとして、 指定したファイル名が探されることになります。 次に、検索される順番を示します。 1, EXEファイルが含まれているディレクトリ 2,
  • ダイナミック リンク ライブラリ(DLL)の基礎知識

    1. DLLの作り方(VC++編) 関数subをDLLにしたい場合,次のようにソースプログラムを作成する. 外部プログラムから呼び出したい関数(この場合sub)の前に __declspec(dllexport)という おまじないをつけておく(このおまじないがついていない関数はDLL外部からは見えないので安心). #include <stdio.h> __declspec(dllexport) int sub(int arg) { printf("sub %d\n", arg); return arg + 1; } sub.c 通常の静的にリンクして利用する関数を作る場合(*.objまたは静的リンク ライブラリ*.libを作ってリンクする場合)との違いは, DLLの外に公開したい関数の定義の前に__declspec(dllexport)というキーワードがつけることだけになっている. [さらに

    reboot_in
    reboot_in 2020/10/21
    “DLLの使い方:明示的リンクによる方法 明示的リンクでDLLを利用するプログラムは, LoadLibrary,GetProcAddress,FreeLibrary の3手からなる.”
  • goでWindows APIを実行する覚書 - Qiita

    golangWindows APIを実行するための覚書(入り口)です。 やってみたこと まずは、感覚を知りたかったのでWindowsのKernel32.dllからGetTickCount関数を実行してOSの起動時間をmsで取得するプログラムを描いてみました。 ソース package main import ( "fmt" "syscall" ) func main() { // golang.org/x/sys/windows(参考) // https://godoc.org/golang.org/x/sys/windows // Win32 API 一覧(参考) // http://www.pinvoke.net/index.aspx // kernel32.dllをロード kernel32, err := syscall.LoadDLL("Kernel32.dll") if err

    goでWindows APIを実行する覚書 - Qiita
    reboot_in
    reboot_in 2020/10/21
    “WindowsAPIならばロード失敗はほぼ考える必要がなく死んどいた方が無難なので MustLoadDLL/MustFindProcでよさそうです。 MustLoadDLL/MustFindProc であれば、失敗した時に自動でpanicにもなりますね。"
  • Big Sky :: Go言語でDLLの読み込み

    Twitterで「Go言語で、いわゆるプラグインの動的ロードってできる?」という発言を見かけたので。 CGOが書けるのでなんでも出来ます。Linux であれば goffi を使えばほぼ何でも出来ます。 cookieo9/goffi - GitHub Go FFI (and dlopen) packages to wrap C libraries. This code is not being actively d... https://github.com/cookieo9/goffi Windows であれば CGO を使わずとも、もともと Windows API には LoadLibrary、GetProcAddress という物が用意されており、Go言語にもその wrapper が提供されています。 package main import ( "log" "syscall" "uns

    Big Sky :: Go言語でDLLの読み込み
  • Loading...

    reboot_in
    reboot_in 2020/10/19
    “EntryPointを指定すると、その文字列をもとにAPIの関数を探すことになるので 下記のように書いても動きます”
  • 1