غير قادر على العثور على نقطة الدخول في tm1api.dll
-
19-09-2019 - |
سؤال
أحاول كتابة تطبيق C # يتصل ب Cognos TM1 DataStore باستخدام tm1api.dll. لقد قمت بإنشاء مشروع Shell أساسي في VS C # Express 2008، وأضاف التعليمات البرمجية التالية
public partial class MainPortal : Window
{
[System.Runtime.InteropServices.DllImport(@"C:\\Program Files\\Cognos\\TM1\\bin\\tm1api.dll", EntryPoint="TM1APIInitialise")]
public static extern void TM1APIInitialise();
public MainPortal()
{
InitializeComponent();
TM1APIInitialise();
}
}
يمكنني بناء هذا المشروع بدون أخطاء، ولكن عند التشغيل، أحصل على الخطأ التالي:
"غير قادر على العثور على نقطة الدخول المسماة" tm1apiinitialise "في dll 'c: program files cognos tm1 bin tm1api.dll'."
لقد استخدمت "Dumpbin / Exports TM1api.dll" لتحديد نقطة الدخول الخاصة بها:
101 5D 00008360 TM1APIFinalize
الآن أنا في حيرة، يبدو أن لديها نقطة دخول ولكن تعترف بذلك. يمكن لأي شخص لي نقطة في الاتجاه الصحيح؟
ملاحظة. أنا جديد تماما على C #، لذلك قد أكون أخطاء أساسية للغاية :)
المحلول 3
شكرا JP و Arsenmkrt، إجاباتك على حد سواء تؤدي إلي ممارسة هذه القضية.
لقد حددتها كما TM1apiinitialise ويجب أن يكون tm1apiinitialize.
لاحظ "S" بدلا من "Z" (الإملاء الأمريكي لعنة) :).
نصائح أخرى
يبدو أن لديك اسم الخاطئ "TM1apiinitialise" خطأ "مقابل" TM1apifinalize ". أيضا، لا تحتاج إلى الهروب من Backslashes إذا كنت تستخدم السلسلة الحرفية @.
جرب هذا
public partial class MainPortal : Window
{
[System.Runtime.InteropServices.DllImport(@"C:\Program Files\Cognos\TM1\bin\tm1api.dll", EntryPoint="TM1APIFinalize")]
public static extern void TM1APIFinalize();
public MainPortal()
{
InitializeComponent();
TM1APIInitialise();
}
}