से मैं (regsvr32) नेट से pHash उपयोग करने के लिए कोशिश कर रहा हूँpHash का उपयोग करते हुए नेट
पहली बात मैंने कोशिश की रजिस्टर करने के लिए था phash.dll
और पूछा कि सभी की here दूसरा, मैं जैसा कि नीचे दिखाया DllImport का उपयोग कर आयात करने के लिए कोशिश कर रहा था ।
[DllImport(@".\Com\pHash.dll")]
public static extern int ph_dct_imagehash(
[MarshalAs(UnmanagedType.LPStr)] string file,
UInt64 hash);
लेकिन जब मैं चलाने के समय के दौरान उपरोक्त विधि तक पहुँचने का प्रयास, त्रुटि संदेश निम्न दिखाता है।
Unable to find an entry point named 'ph_dct_imagehash' in DLL '.\Com\pHash.dll'.
क्या "प्रवेश बिंदु" का अर्थ है और क्यों मैं त्रुटि हो रही है करता है?
धन्यवाद।
FYI करें - यहाँ phash.org पर पूर्ण स्रोत कोड
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows;
namespace DetectSimilarImages
{
public partial class MainWindow : Window
{
[DllImport(@".\Com\pHash.dll")]
public static extern int ph_dct_imagehash(
[MarshalAs(UnmanagedType.LPStr)] string file,
UInt64 hash);
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
try
{
UInt64 hash1 = 0, hash2 = 0;
string firstImage = @"C:\Users\dance2die\Pictures\2011-01-23\177.JPG";
string secondImage = @"C:\Users\dance2die\Pictures\2011-01-23\176.JPG";
ph_dct_imagehash(firstImage, hash1);
ph_dct_imagehash(secondImage, hash2);
Debug.WriteLine(hash1);
Debug.WriteLine(hash2);
}
catch (Exception ex)
{
}
}
}
}
आप DLL खुद के संकलन किया था? यदि हां, तो क्या आपने प्रासंगिक फ़ंक्शन को उचित रूप से निर्यात करने का ख्याल रखा है? –
@ कोनराड: मैंने स्रोत को स्वयं संकलित किया है, लेकिन मैंने "प्रासंगिक कार्यों को सही ढंग से निर्यात करने" पर जो कहा है, उससे मैं खो गया हूं क्योंकि मैं सी ++ से परिचित नहीं हूं ... – Sung
@Sung फिर फिक्स आसान है: * नहीं * पुस्तकालय संकलित करें। Precompiled बाइनरी का प्रयोग करें। दुर्भाग्यवश, –