• ベストアンサー

VC8でOpensslを使う方法

Visual Studio 2005でOpensslを使用したいのですが、 ソースでは、#include <openssl/rand.h> のように使用。 http://www.limber.jp/?Software%2FOpenSSL%20for%20Windows にある、openssl-0.9.8e-win32-bin_dynamic.zip を利用させていただきたいのですが、 .dllや.libファイルはどこに置けば宜しいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.3

>ソースでは、#include <openssl/rand.h> この様な使用方法をする場合、プロジェクトの検索パスを 設定するのが一般的な方法です。 #VC2005は使ったことがありませんが、 #VC2003では、[ツール]→[オプション]→[Project]→[ディレクトリ]でユーザごとに #[プロジェクト]→[プロパティ]→[リンカ]→[追加のライブラリ ディレクトリ]で、プロジェクト毎に設定可能です。 >.dllや.libファイルはどこに置けば宜しいのでしょうか? 好きなところ、判りやすいところ、 またはプロジェクトなどで他に使用しているDLLのlibなどが あるところにおけばいいと思います。 上で述べたようにプロジェクトのパスを設定すれば どこでもよいのです。 >.dllや.libファイルはどこに置けば宜しいのでしょうか? DLLとLIBの違いは判っていますか? DLLファイルはコンパイルとは無関係ですので、これが無くても コンパイルは可能です。 LIBファイルには生成されたバイナリが外部にエクスポートしてる 関数などの情報をもったファイルで、公開される関数の仕様が 変わったり、関数が追加されたりしない限りは変更する必要は ありません。 このファイルは通常コンパイル後のリンク時にしようされます。 上で述べたとおり、これはプロジェクトで検索パスを指定している 場所にそれがあれば自動的にリンクされます。 DLLはコンパイルされたバイナリが実行時にロードします。 これらは通常そのDLLを使用する実行ファイルと同じパスに置くか、 または、Windowsの場合環境変数PATHで登録されたパスに置くことで、 ロードが可能となります。(リンクすものにもよるかも) ただし、VCなどでデバックを行う場合、実行ファイルのカレントが 実行ファイルのパスではなくプロジェクトファイルのパスになる事に 注意してください。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

ちょっと書き方が足らなかったですね。MFCを使っている時だけ出る問題です。すいません混乱させて。 opensslだと出ない問題かも知れません。使っている関数次第なので。

全文を見る
すると、全ての回答が全文表示されます。
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

開発時は、dllは実行ファイルのあるフォルダ。libはソースファイルのあるフォルダに置くのが一番簡単です。 ただ、Visual Studio 2005利用時は自分でdllとlib作らないとリンクエラーが出る気がします。リンクエラーするようなら聞いてください。

lovelace21
質問者

補足

回答ありがとうございます。 >ただ、Visual Studio 2005利用時は自分でdllとlib作らないとリンクエラーが出る気がします。 ということは、サイトにあるファイルはそのまま使っても意味がないと いうことでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • windows10でVC6.0++のclを使いたい

    cl.exeの場所:C:\Program Files\Microsoft Visual Studio\VC98\Bin 環境変数INCLUDE設定:C:\Program Files\Microsoft Visual Studio\VC98\Include 環境変数LIB設定:C:\Program Files\Microsoft Visual Studio\VC98\Lib を登録したのですが、mspdb60.dllがないといわれました。 検索したらあるのですが、 どうすれば、Windows10でvc6.0++のCコンパイラを使えますか? 教えてくださいよろしくお願いします。

  • openssl-win32でのエラー

    お世話になります。 初心者なんですが、Windows7上でコマンドプロンプトからopenssl-win32を使用して証明書の発行手続きを行う際に、最初のランダムシード作成時 C:¥openssl-win32¥bin>openssl md5 * > rand.dat と入力すると、 PEM:Permission denied と表示されて処理が出来ません。 コマンドプロンプトは管理者で実行しています。 すみませんがどなたか襲えて下さい。

  • [VC++2008].dllが見つからない

    Visual Studio C++ 2008で自作DLLを使用したプログラムを作成しています。 ソースツリーが以下のようにあります。 main.cpp で #pragma comment(lib,"myutil_d.lib") #include "myutil.h" とすると、コンパイルは成功するのですが、prog1.exeを実行すると: 「myutil_d.dllが見つからなかったため、このアプリケーションを開始できませんでした。」 と出てきてプログラムが始まりません。 これを解決する方法をご教授いただけるでしょうか? (MYPROGROOT) |-include | |-myutil.h | |-lib | |-myutil_d.dll | |-myutil_d.exp | |-myutil_d.lib | |-prog1 | |-Debug | | |-prog1.exe | | |-prog1.ilk | | |-prog1.pdb | |-prog1 | | |-Debug | | | |-BuildLog.htm | | | | ... | | | | | | |-main.cpp | | |-prog1.vcproj | | | |-prog1.ncb | |-prog1.sln | |-prog1.suo | |-prog2 |-Debug | |-prog2.exe | |-prog2.ilk | |-prog2.pdb |-prog2 | |-Debug | | |-BuildLog.htm | | | ... | | | | |-main.cpp | |-prog2.vcproj | |-prog2.ncb |-prog2.sln |-prog2.suo 「>ツール>オプション>プロジェクトおよびソリューション」下 インクルード ファイル :$(MYPROGROOT)\bin ライブラリ ファイル :$(MYPROGROOT)\include もちろんmyutil_d.dllを(MYPROGROOT)\prog\Debug\ に配置するとプログラムは動くのですが、prog1, prog2, と多数のプログラムで myutil_d.dllを使用するため、バージョン管理のために統一のディレクトリで .dllファイルを管理したいと考えています。

  • OpenSSLでOPENSSL_Applinkが見つからない。

    WindowsXPでOpenSSL(ver 0.9.8.h)を使用したDLLを作成しています。 PEMファイルを読み込むためにPEM_read_RSA_PUBKEY、PEM_read_RSAPrivateKeyを使用したいのですが、PEM_readRSA_PUBKEY、PEM_read_RSAPrivateKey部分で、 OEPNSSL_Uplink(04847010,05):no OPENSSL_Applinkというエラーが出てしまいます。 通常プロジェクトですとうまくいくのですが、DLLにしてExcelVBAで動作させると上のエラーが発生してしまいます。 エラー箇所だと思われるソースコード(uplink.c)を見ると applink=(void**(*)())GetProcAddress(h,"OPENSSL_Applink"); if (applink==NULL) { apphandle=(HMODULE)-1; _tcscpy (msg+len,_T("no OPENSSL_Applink")); break; } の箇所でapplinkがNULLのためエラーになってしまっているようです。 作成したDLLをコマンド[dumpbin /EXPORTS 自作DLL]で見ると実行させたい関数と、OPENSSL_Applink関数が表示されます。 (序数ではなく、_OPENSSL_Applinkで表示されます。) 原因がわかる方いらっしゃいますでしょうか? よろしくお願い致します。 OS:WindowsXP OpenSSL:0.9.8.h Excel:2002

  • VC++6.0とVB6.0の開発方法

    どうかよろしくお願いします。 早速ですが私は今大学院生であり、大学院を中退してしまった先輩の開発したアプリケーションを改造したいと考えています。しかし、そのアプリに関して説明書が無く、自分でソースコードを解読し、改造しなければなりません。 アプリは起動するとエクスプローラのような画面になり、フォルダを選択してその中のファイルの設定項目に数値を入力し、メニューバーから「実行開始」を選択すると、ある現象のシミュレーション結果を出力する、といったソフトです。 その先輩はVisual Studio 6.0を用いて、VC++6.0とVB6.0で開発しており、(多分)全てのソースコードは残っています。たまにバグが出ますが、アプリもちゃんと動きます。 私は、こういったソフト開発はVisual Studio .NET 2002を用いてVC++.netでダイアログベースのMFCアプリケーションを作ったことならあるのですが、Visual Studio 6.0は使ったことが無く、VC++6.0とVB6.0の異なる言語でひとつのアプリを作ったことは未経験です。 現在、ソースコードと格闘中ですが、.NET 2002で開発したときの拡張子slnファイルが拡張子dswに該当するということと、おそらく先輩はアルゴリズム計算部分はVCで書いて、GUIの方はVBで書いたということくらいしか分かっていません。また、アプリのソースコードが入っているフォルダには[bin][src][include][lib][vb]といったフォルダがあり、[src]の下層にはまたソースコードが大量に入ったフォルダがあり、[bin]にはバイナリファイル、実行exeファイルが大量に入っています。[vb]にはVBで記述されたソースらしきものが入っています。 以上が背景なのですが、ソフトに詳しい方に幾つか質問させてください。 (1)このソフトを改造したいとすれば、具体的にどういう手順で改造すればよいですか? (2)VCの方はdswファイルについてビルドすればコンパイルされ、[bin]にexeが出来る?のですが、VBの方はコンパイル出来ません。なぜでしょうか? (3)このような異なる大量なexeファイルを、ひとつのアプリケーションとして構築するのはどうすれば良いのですか?これらのexeファイルは一つ一つがモジュール?であり、それらを結合する…といった理解でいいのでしょうか? (4)このVisual Studio 6.0で作られたソースを、現在フリーでダウンロードできるVisual Studio 2008 Express Editionに移行して改造することは、容易にできるでしょうか? 他にもたくさん疑問はあるのですが、とりあえず以上4つの疑問にお答え頂ける方がおりましたらご教授下さい。

  • PHPにおいてopensslを有効にする方法

    PHP(XAMPP使用)においてopensslを有効にする方法 FuelPHPというフレームワークを導入しようと思い、 「はじめてのフレームワークとしてのFuelPHP」という 電子書籍を購入しました。 その書籍内で、「opensslを有効にする」という項目があり、 php.ini内の指定の場所に、 extension=php_openssl.dll という記述を付け加えるようにと指示がありました。 その通りにしてみたのですが、 Apacheを起動する際に、 PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_openssl.dll' - 指定されたモジュールが見つかりません。 というエラーメッセージが出ました。 そこで、openssl.dllを下記サイトよりダウンロードして、 ( http://jp.softpicks.net/dll/php_openssl-dll-1966 … ) C:\xampp\php\extフォルダの中に、 openssl.dllを入れてみました。 しかし、Apacheを再起動すると、 下記のような「Warning」が2度出ます。 PHP Startup: openssl: Unable to initialize module Module compiled with build ID=API20090606,TS,VC9 PHP compiled with build ID=API20090626,TS,VC6 These options need to match 上記の状態から、どうしても解決出来ないでいます。 ご教授頂けましたら幸いです。宜しくお願い致します。 環境: Windows7 64bit XAMPP Version1.7.2 PHP Version 5.3.0

    • ベストアンサー
    • PHP
  • BCBで作成したDLLを、VC++で静的リンクさせる方法

    BCBで作成したDLLを、VC++で静的リンクさせる方法 Borland C++ Builderで作成したDLLを、VC++アプリケーションで利用できるように LIBファイルに変換したいのですが、上手くいきません。 下記の手順を踏みました。 1. BCBでDLL作成   「VC++スタイルのDLL」で作成、   「VCLを使う」「CLXを使う」「マルチスレッドを使う」はチェックせず 2. コマンドラインで「IMPDEF.exe」を使用して、dllからdefファイル作成   (IMPDEF.exeは、\Borland\CBuilder6\Binに格納されていた) 3. コマンドラインで「LINK.exe」「LIB.exe」を使用して、defからlibファイル作成   (LINK.exeとLIB.exeは、\Microsoft Visual Studio\VC98\Binに格納されていた) 4. VC++プロジェクトファイルを保存したフォルダに、DLLファイルとlibファイルをコピー 5. VC++の「プロジェクト」-「設定」-「リンク」-「オブジェクト/ライブラリモジュール」に   作成したlibファイルを追加 VC++プロジェクトをビルドすると、下記のエラーメッセージが表示されます。 ///////////////////////////////////////////////////////////////////////////////// dllread.obj : error LNK2001: 外部シンボル "__imp__(関数名)@0" は未解決です LIBC.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です Release/dllread.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー ///////////////////////////////////////////////////////////////////////////////// BCBとVC++のバージョンは、下記の通りです。 BCB Professional 6.0 VC++ 6.0 ちなみに、同じDLLを動的リンクで利用することは出来ました。 初心者の質問で申し訳ございませんが、解決策が分かる方がいらっしゃいましたら 教えていただけないでしょうか?

  • OpenSSL ライセンス

    プログラミングとは少々異なる話題ですが、どのカテゴリで質問すればよいか分らなかったのでこちらのカテゴリに質問させて下さい。 個人で、OpenSSL と libssh2 の各ライブラリを用いたwindows用ソフトを作成しようと考えていますが、OpenSSL ライセンスについていまいちわからず悩んでおります。 [OpenSSL ライセンス] http://docs.hp.com/ja/T2351-90035/apas03.html http://publib.boulder.ibm.com/tividd/td/TWS/SC32-1277-01/ja_JA/HTML... にあるように、例えばいかなる形の再配布も "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" と謝辞に含めろというようなことが書かれています。 一方で openssl に依存するライブラリの libssh2 は BSDライセンス。 これら2つをリンクしたバイナリを配布する際は、OpenSSLライセンスに従って 1.同梱するREADME.txt 等のファイルに"The product ..." を記述 2.http://docs.hp.com/ja/T2351-90035/apas03.html の内容を LICENSE.txt 等のファイルに記述 の2点を行えばよいという解釈でよろしいですか? また、もしソースコードも公開する場合は OpenSSL等 をリンクしていないわけですから、適当にBSD ライセンス等にしてしまってよいのでしょうか? そうするとバイナリ配布には謝辞を含め、ソースコードの配布には含めなくてよいということになりますか?

  • VC++2010のmsvcp100.dllについて

    私は、windows7 64bitで「Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1」や「Microsoft Windows SDK for Windows 7 and .NET Framework 4」 をインストールしました。 しかし、Message: Visual Studio C++ 2010のProgram Files (x86)\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT\msvcp100.dllが見当たりません。redistフォルダ自体が存在しません。 どうすれば、Program Files (x86)\Microsoft Visual Studio 10.0\VC\いかにredistフォルダとmsvcp100.dllを作成することができますか?

  • 64ビット コマンドライン Cプログラミング

    私の環境は以下のとおりです CPU x6800 メモリ 8GB Vista 64 sp1 Visual studio 2005 やりたいことは、コマンドプロンプト[ > ] で 大きな配列 char dem[1000][1000][2000] を使うCプログラムを作成し使用すること。 質問したいことは、 コマンドラインの環境設定(PATH: bin lib include) コンパイラ リンカ の/オプション はどのように設定したらよいのでしょうか。 現状は work.c のコンパイル+リンク で work.exe はエラーなく成功するのですが 実行すると、{ work.exeは有効な win32 アプリケーションではありません。} というエラーが出て実行できません。 配列の要素を2000->1000にすればもちろんエラーは出ません。 なおこのときのコマンドプロンプトは  Visual Studio 2005 x64 Win64 コマンド プロンプト PATH は次のようになっています。 PATH=C:\Program Files (x86)\Microsoft Visual Studio 8\VC\BIN\amd64;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin\win64\amd64;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin;  C:\Windows\Microsoft.NET\Framework64\v2.0.50727;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\VCPackages;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\bin;  C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\bin;  C:\Windows\system32;C:\Windows;  C:\Windows\System32\Wbem;  C:\Windows\System32\WindowsPowerShell\v1.0\ 先達のご教示をお願いいたします。