我知道,这是一个老问题,但也许有人看看这个。
在C#中有一些启发;
public class Orca
{
// Orca Session
[DllImport("pborc170.dll", EntryPoint = "PBORCA_SessionOpen", CharSet = CharSet.Unicode, SetLastError = true)]
private static unsafe extern int PBORCA_SessionOpen170();
//Session close
[DllImport("pborc170.dll", EntryPoint = "PBORCA_SessionClose", CharSet = CharSet.Unicode, SetLastError = true)]
private static unsafe extern void PBORCA_SessionClose170(int hORCASession);
// Entry Delete
[DllImport("pborc170.dll", EntryPoint = "PBORCA_LibraryEntryDelete", CharSet = CharSet.Unicode, SetLastError = true)]
private static unsafe extern int PBORCA_LibraryEntryDelete170(int hORCASession, [MarshalAs(UnmanagedType.LPTStr)] string lpszLibName, [MarshalAs(UnmanagedType.LPTStr)] string lpszEntryName, PBORCA_TYPE otEntryType);
//set the entry type enums
private enum PBORCA_ENTRY_TYPE
{
PBORCA_APPLICATION,
PBORCA_DATAWINDOW,
PBORCA_FUNCTION,
PBORCA_MENU,
PBORCA_QUERY,
PBORCA_STRUCTURE,
PBORCA_USEROBJECT,
PBORCA_WINDOW,
PBORCA_PIPELINE,
PBORCA_PROJECT,
PBORCA_PROXYOBJECT,
PBORCA_BINARY
}
public static void LibraryEntryDelete(string pbl= "blabla.pbl", string entry = "blablaDatawindow", PBORCA_ENTRY_TYPE entryType= PBORCA_ENTRY_TYPE.PBORCA_DATAWINDOW)
{
//Open Session
int orcaSession = PBORCA_SessionOpen170();
//delete entry
PBORCA_LibraryEntryDelete170(orcaSession, pbl, entry, entryType);
//close session
PBORCA_SessionClose170(orcaSession );
}
}
.NET 中的 ORCA 功能具有巨大潜力。也许看看 github 上的 PBDotNet 项目会更清楚。