こんにちは。
現在WindowsXP環境にてOpenSSL(ver0.9.8.h)を使用したDLL(C言語)の作成を行っています。
そこでlibeay32.dll、libssl32.dllをsystem32に配置し、VC++を使用してDLL作成のプロジェクトでPEMファイルを読み込む関数を作成しました。
その関数の中で、PEM_write_RSA_PUBKEY、PEM_read_RSA_PUBKEY等を実行すると異常終了してしまいます。(エラーが表示されず、強制終了します。)
そこで通常のプロジェクトで同じように作成し、実行しても駄目でした。
ですが、ファイル出力ではなく、stdout(コンソール)だとうまくいくのでよくわかりません。
どなたか原因のわかる方はいらっしゃいますでしょうか?
OS:WindowsXP
OpenSSL:0.9.8.h
No.2ベストアンサー
- 回答日時:
(たぶん)ソースコードには問題ないと思います。
DLL だけ以下のサイトから差し替えてみてはどうでしょうか。
参考URL:http://www.nec.co.jp/WebOTX/module/apache1_08070 …
No.1
- 回答日時:
皆目検討もつきませんが、
OpenSSL はご自分でコンパイルされたのでしょうか。
また、もし前後のソースコードを公開できるのなら、
それも解決のヒントになるかと思います。
この回答への補足
回答ありがとうございます。
OpenSSLは
http://www.slproweb.com/products/Win32OpenSSL.html
からダウンロードしたDLLを使用しています。
ソースコード(通常のプロジェクト)は
// main.c
#include <stdio.h>
#include <string.h>
#include <openssl/rsa.h>
#include <openssl/engine.h>
#include <openssl/pem.h>
int main() {
FILE *fp;
RSA *rsa;
int result;
fp = fopen("C:\\publicKey", "w");
if( fp == NULL ) {
printf("FILE ERROR!!");
return 1;
}
rsa = RSA_generate_key(2048, 65537, NULL, NULL);
if (rsa == NULL) {
printf("RSA ERROR!!");
fclose(fp);
return 1;
}
result = PEM_write_RSA_PUBKEY(fp, rsa);
if( result != 1 ) {
printf("PEM WRITE ERROR!!");
fclose(fp);
return 1;
}
RSA_free(rsa);
fclose(fp);
return 0;
}
// end
result = PEM_write_RSA_PUBKEY(fp, rsa);の部分で強制終了してしまいます。
また、resutl = PEM_write_RSA_PUBKEY(stdout, rsa);
だと正常終了します。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- Windows 10 windowsの回復ドライブや復元ポイントを使用した場合の戻る位置を教えてください。 5 2023/08/19 14:52
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
- その他(クラウドサービス・オンラインストレージ) Onedriveで実現したい事。2台のPC間で。 2 2023/04/10 20:42
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイルするときに、ファイ...
-
ソースから参照しているOCXの一...
-
VB6.0の別名保存について
-
VS2010 ProductVersion 変更
-
AccessVBAからC言語のDLLの呼び...
-
VB.NETで他のプロジェクトで作...
-
VC++でプロジェクト名の変え方...
-
ビルドエラー(C1083)について
-
VC++でプロジェクト名などを変...
-
Visual Stadio2008 Releaseビル...
-
C#のクラスをVB.netで使用したい!
-
VB6で、非表示モジュール(?)の...
-
VC++(VS)でコンソールアプリ(...
-
ACCESSのEXEを作るのは可能...
-
エラーの原因は?「この関数の...
-
他の.CPPファイルに定義した関...
-
VC++でexeファイルが作成できま...
-
VB6.0
-
VB6.0 オブジェクトを一覧で表示
-
C言語初心者の質問失礼します。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで他のプロジェクトで作...
-
ACCESSのEXEを作るのは可能...
-
コンパイルするときに、ファイ...
-
エラーの原因は?「この関数の...
-
VB.NETでActiveX(OCXファイル)作成
-
ソースから参照しているOCXの一...
-
他の.CPPファイルに定義した関...
-
VC++でexeファイルが作成できま...
-
VB6で、非表示モジュール(?)の...
-
C#のクラスをVB.netで使用したい!
-
「マージする」とは?
-
Visual Studioでプロジェクトが...
-
Visual Stadio2008 Releaseビル...
-
VBソースを表示できない。
-
プリコンパイル?
-
libssh2のインクルード
-
VB6.0 オブジェクトを一覧で表示
-
VB6.0の別名保存について
-
VisualBasicを保存するときにで...
-
同じソースコードなのにバイナ...
おすすめ情報