在Oracle窗体中从DLL(c#)调用函数

在Oracle窗体中从DLL(c#)调用函数,c#,forms,oracle,dll,C#,Forms,Oracle,Dll,在Oracle Forms 6i中从DLL调用方法时,我遇到了一个大问题。DLL已被写入 C#,代码为: using System; using System.Collections.Generic; using System.Linq; using System.Text; using OnlineFPCommon; using System.Windows.Forms; namespace TestNamespace { public class TestClass {

在Oracle Forms 6i中从DLL调用方法时,我遇到了一个大问题。DLL已被写入

C#,代码为:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OnlineFPCommon;
using System.Windows.Forms;

namespace TestNamespace 
{
    public class TestClass
    {
        public static void testMethod()
        {
             MessageBox.Show("testMethod");
        }
    }
} 
我尝试使用Oracle窗体代码调用它:

testlib_lhandle := Ora_Ffi.Load_library('C:\libdir\','test.dll');
getresult_fhandle := ora_ffi.register_function(testlib_lhandle,'testMethod');

但是第二行,当我尝试注册函数时失败了。为什么?如何正确调用该函数?

register\u函数需要一个dll入口点,您无法在托管代码中生成该入口点


您可以编写一个C++/CLi包装DLL来为托管代码提供本机入口点,但如果您只是从头开始,那么为什么不编写一个简单的本机DLL。

好的,我更改了调用C#DLL的方式。我用C++ DLL做的。总结:1)从Oracle表单中调用C++中的DLL函数。2)C++中的函数调用C.Y.DLL函数。3.)现在我的oracle窗体应用程序崩溃。嗯,这很奇怪,因为我尝试用C++应用程序代替Oracle表单,它工作。那么,在Oracle Forms 6中不起作用会是什么问题呢?请尝试使用Oracle进程作为调试目标来调试dll。