HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0219
aoisensiHSPでC#で作ったdllを使えるか9解決


aoisensi

リンク

2012/2/19(Sun) 10:00:33|NO.44948

タイトルのとおりです

#uselib "test.dll" #func Login "Login" str,str Login "aoisensi","abc123"
こんな感じでDLLを使おうとしてるのですがうまくいきません
DLLはどんなものなのかはとある事情で公開できないですが
Login命令の最初はこんな感じです

public Session Login(string username, string password)
何か問題ありますでしょうか?



この記事に返信する


aoisensi

リンク

2012/2/19(Sun) 10:01:58|NO.44949

#Error 38 in line 3 (hoge.hsp)
-->外部DLlの呼び出しに失敗しました

というエラーが出ます



HK2

リンク

2012/2/19(Sun) 11:07:05|NO.44952

C#に明るくないので、適切な回答でないかもしれませんが、
C#は.Net Frameworkでエミュレートしているようなものなので、
そのエミュレーターを持たないHSPでは実行できないのかもしれません。
C#もDLLに関してはネイティブなコードを出力している場合は忘れてください。


もしかすると、何らかのDLLを一緒に同梱すれば解決できるかもしれませんし、
C++の場合ですが、ランタイムライブラリー(?)をマルチスレッドに変更すればできたりするかもしれません。


あと、自作DLLを使用して、それを公開する場合、
ほかの(DLLを作成したコンパイラやそれに合わせたものが入っていない)環境で
動作チェックをするようにしてください。

私がVC++でDLLを作成したとき、
そのコンピューターでHSPから呼び出したときは成功しましたが、
ほかのコンピューターで同じことをしようとしてもうまくいきませんでした。



foobar

リンク

2012/2/19(Sun) 11:28:48|NO.44955

HSPからC#で書かれたDLLを使うのはとても難しいです。
というのは、C#で書かれたDLLは普通の"レガシーなDLL"とは違い、
ネイティブコードではなくMSILなどしか含んでいない.net アセンブリと呼ばれるものです。
中でLoadLibraryやGetProcAddressを使っている(と思われる)HSPの#uselibでは呼び出せません。

呼び出す方法としては逆P/Invokeを用いる方法が考えられます。
その他にも、もしかしたらC++/CLIでラッパーを書けば呼び出せるのかもしれないですが、
私はその辺り両方に明るくないので説明はできないです。。。



foobar

リンク

2012/2/19(Sun) 11:38:20|NO.44956

そういえば、.net のクラスをCOMとして公開する方法もありますね。
.DLLの登録は必要になりますが、こちらの方が簡単かもしれません。



aoisensi

リンク

2012/2/19(Sun) 12:06:30|NO.44957

>>foobar
その.net のクラスをCOMとして公開する方法をできれば教えていただけないでしょうか



foobar

リンク

2012/2/19(Sun) 12:58:40|NO.44961

基本的には下のURLで説明されている方法と同じです。
http://azurite.espel.jp/index.php/2011/03/16/vs2010-com/

作ったらHSP上でnewcomとかして呼び出せばよいです。

この方法で作ったCOMとHSPのプログラムを配布する際は、
配布先にはもちろん.net Frameworkが必要ですし、使う前に登録が必要です。
(開発中は上の説明に従えばVSが勝手に登録してくれますが。)



aoisensi

リンク

2012/2/19(Sun) 13:00:58|NO.44962

ありがとうございます!がんばってみます!



aoisensi

リンク

2012/2/19(Sun) 13:49:45|NO.44965

やべぇ・・・COM系全然わからんわ



check

リンク

2012/2/19(Sun) 19:51:07|NO.44974

そもそもC#で作ったDLLをHSPで使おうとしていることに無理があるのでは。
C#を使うのならC#一本で行けばいいのでは。



ONION software Copyright 1997-2023(c) All rights reserved.