私はASP.net相互運用機能の初心者なので、ここにあるのは、asp.netmvcアプリから呼び出す必要のあるアンマネージdllです。
dll名はCTSerialNumChecksum.dllです。以下の2行だけを使用して、信頼できる応答からaspからdllを簡単に呼び出すことができます。すべてが正常に機能していることを書いてください。
set CheckSumObj = Server.CreateObject("CTSerialNumChecksum.CRC32API")
validSno = CheckSumObj.ValidateSerialNumber(no)
dllへの参照を追加しようとすると機能しないため、管理されていないことがわかります。相互運用とマーシャリングに関するいくつかのチュートリアルに従おうとしていますが、これまでのところ、コードを機能させることができませんでした。
オブジェクトを別の静的クラスにラップして、アプリの残りの部分にコードを呼び出させようとしています。なぜasp.netで動作させるのが難しいのか、それとも私がばかげたarggghhhなのかわからない。
using System;
using System.Runtime.InteropServices;
namespace OnlineRegisteration.Models
{
public static class SerialNumberChecksum
{
[DllImport("CTSerialNumChecksum")]
public static extern int ValidateSerialNumber(string serialNo);
}
}
質問:
- クラスを書くにはどうすればよいですか?私が見つけたほとんどの例は、クラス、.CRC32API部分を含んでいませんでした、そして、それらは非常に難しいようです
- また、特定のファイルがどのタイプのdllであるか、つまりアンマネージC ++などを識別するためにどのツールを使用できますか?
- また、後でjqueryを使用してajax呼び出しを実行し、これを使用してフォームの事前送信を検証できるようにする予定です。これを処理するためのより良い方法はありますか?
Dumpbin呼び出しでこれが返されましたが、内部に検証関数名が表示されない理由がわかりません。
File Type: DLL
Section contains the following exports for CTSerialNumChecksum.DLL
00000000 characteristics
3D75BB53 time date stamp Wed Sep 04 15:50:43 2002
0.00 version
1 ordinal base
4 number of functions
4 number of names
ordinal hint RVA name
1 0 000015CB DllCanUnloadNow
2 1 000015D7 DllGetClassObject
3 2 000015F1 DllRegisterServer
4 3 00001601 DllUnregisterServer
Summary
5000 .data
2000 .rdata
2000 .reloc
2000 .rsrc
8000 .text
更新:
これは名前のマングリングが原因でしょうか?それはc++dllなので、少なくとも私が疑うものはとにかく...