class COREDLL Fresnel {
public:
// Fresnel Interface
virtual ~Fresnel();
virtual Spectrum Evaluate(float cosi) const = 0;
};
是这样的,这是一个Dll工程,对于dll本身工程来说,他需要导出数据,工程默认下定义了CORE_SOURCE(依次打开“工程-》属性-》配置属性-》C++-》预处理”,可以看到,我用的英文版,翻译可能有出入)
这个时候:
#ifdef WIN32
#ifdef CORE_SOURCE//由于定义了CORE_SOURCE
#define COREDLL __declspec(dllexport) //这个有效
#else
#define COREDLL __declspec(dllimport) //这个无效
#endif
故这个时候CORE_SOURCE代表__declspec(dllexport),即导出数据
对于其他工程而言,可能需要用到这个dll的导出数据,这个时候就应该导入CORE_SOURCE工程,由于其他工程没有定义CORE_SOURCE,这个时候:
#ifdef WIN32
#ifdef CORE_SOURCE//由于没有定义CORE_SOURCE
#define COREDLL __declspec(dllexport) //这个无效
#else
#define COREDLL __declspec(dllimport) //这个有效
于是COREDLL代表__declspec(dllimport) 即导入数据
这样可以方便的导入导出数据。
如果你还不懂什么叫导入、导出数据,对dll不熟悉的话,找本书看吧。
分享到:
相关推荐
首先,我们需要理解C#中的类库项目(Class Library Project),在这里被称为CoreDll库。这是一个静态库,包含了可重用的代码和逻辑,可以被多个应用程序引用。在本例中,CoreDll库可能包含了处理聊天功能的核心逻辑...
public class TouchCalibration { [DllImport("coredll.dll")] public static extern void CeCalibrateTouch(); public static void Main() { Console.WriteLine("启动笔针校准..."); CeCalibrateTouch(); ...
在VB6中,我们可以方便地使用ShellExecuteEx和CreateProcess等API函数来启动进程,但在VB.NET中,我们需要手动声明并处理这些API,同时解决Win CE的核心API位于coredll.dll库以及字符编码问题。 首先,我们需要了解...
public class TimeManager { // 导入Coredll.dll中的函数 [DllImport("Coredll.dll")] public static extern void GetLocalTime(SystemTime st); [DllImport("Coredll.dll")] public static extern void ...
public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } /// /// 隐藏OK按钮 /// /// <param name="hWnd"></param> /// <param name="dwState"></param> /// <returns>...
class MusicPlay { private string filename; private string m = @""; private long t; [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)] private static extern long ...
class TouchscreenProgram { static void Main(string[] args) { MessageBox.Show("Touchscreen:" + (PlatformDetection.IsTouchScreen() ? "Yes" : "No")); } } ``` ### 总结 本文通过对给定代码的详细分析,...
class COREDLL Camera { public: // 公共数据成员和构造函数 Camera() { /* ... */ } protected: // 受保护的数据成员 }; // 必须实现的方法 virtual float GenerateRay(const Sample &sample, Ray *ray) const...
public class SECURITY_ATTRIBUTES { public int nLength; public int lpSecurityDescriptor; public int bInheritHandle; } ``` 然后是关键的逻辑部分: ```csharp private const int ERROR_ALREADY_EXISTS = ...
public class DeviceID : System.Windows.Forms.Form { public DeviceID() { InitializeComponent(); } protected override void Dispose(bool disposing) { base.Dispose(disposing); } private static ...
public class LockTaskBar { [DllImport("CoreDll.dll", SetLastError = true)] public static extern IntPtr FindWindow(string className, string WindowName); [DllImport("coredll.dll", EntryPoint = ...
("coredll.dll", SetLastError:=True)> Private Shared Function GetSystemPowerStatusEx(ByRef lpSystemPowerStatus As PowerStatus, ByVal fUpdate As Boolean) As Boolean End Function Public Class ...
[DllImport("coredll.dll")] public static extern int CeGetBatteryInfo(out BATTERYINFO batteryInfo); public class BatteryManager { public void GetDetailedBatteryInfo() { BATTERYINFO batteryInfo = ...
public class TaskbarHider { [DllImport("coredll.dll", SetLastError = true)] private static extern IntPtr FindWindow(string className, string windowTitle); [DllImport("coredll.dll")] private ...
代码如下:class WinAPI{ [DllImport(“coredll.dll”)] private static extern IntPtr SetCapture(IntPtr hWnd); [DllImport(“coredll.dll”)] private static extern IntPtr GetCapture(); public ...
class MyDisplayDriver : public GPERotate { // 实现具体的函数 }; ``` 2. **实现GetGPE()函数**:该函数用于将自定义的Display驱动实例返回给上层的DDI接口。 ```cpp GPE* GetGPE() { return static_cast...
[DllImport("coredll.dll")] private static extern int CeRILSMessaging_OpenMessageStore(int lpszStore, int lpszFolder, int dwAccess, out int phStore); // 其他相关DllImport声明... public void Read...
public class NativeMethods { [DllImport("coredll.dll")] public static extern bool SystemIdleTimerReset(); } // 在需要防止待机的地方调用 NativeMethods.SystemIdleTimerReset(); ``` 在项目"Windows ...
[DllImport("coredll.dll", SetLastError = true)] private static extern uint RegisterWindowMessage(string lpString); protected override void WndProc(ref Message m) { if (m.Msg == WM_MY_CUSTOM_MSG)...
[DllImport("coredll.dll")] private static extern bool Beep(uint frequency, uint duration); public static void Main() { // 调用Beep函数,发出1000Hz的声音,持续1秒 Beep(1000, 1000); } } ``` 在...