在Oracle窗体中从DLL(c#)调用函数
在Oracle Forms 6i中从DLL调用方法时,我遇到了一个大问题。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 {
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。