精华内容
下载资源
问答
  • c++builder 6

    2019-11-16 11:30:49
    C++builder 6供学习使用,里面安装包运行后如果没正确安装 记得手动移动文件夹 还有 win10 兼容性修改一下
  • c++builder6和c++builder之间的差异? c++builder6和c++builder之间的差异? c++builder6和c++builder之间的差异? c++builder6和c++builder之间的差异? c++builder6和c++builder之间的差异? c++builder6和c++...
  • c++builder 6技术大全

    2019-02-17 14:41:47
    c++builder 6技术大全
  • MyDAC for C++Builder 6

    2018-03-13 11:56:27
    MySQL Data Access Components Professional MyDAC 6.10 for C++Builder 6
  • C++Builder 6

    2012-01-01 10:47:01
    各位大虾,这两天在学习C++Builder,碰到一个错误提示:Identifier‘miFileEjectCDClick' cannot have a type qualifier ,请问这是什么问题,怎么解决呢?菜鸟在此不胜感激!!!
  • MyDAC 7.0 for C++Builder 6

    2018-10-12 14:10:19
    MySQL Data Access Components Professional MyDAC 7.0 for C++Builder 6
  • c++builder6彻底研究

    2017-02-21 22:31:02
    c++builder6彻底研究 互助,上传资源全0分下载,在资源所搜栏,输入 yabc444 看看有你需要的么!
  • C++ Builder 6制作ActiveForm源码
  • borland c++ builder 6 xml处理总结,xml文件处理的控件使用
  • 加快C++Builder6编译速度加快C++Builder6编译速度加快C++Builder6编译速度加快C++Builder6编译速度
  • C++ BUILDER 6帮助文档及使用说明,
  • C++builder6 连接Access数据库的每一步操作截图与说明,适合初学者
  • C++Builder6图片拖动demo

    2017-11-14 16:15:51
    C++builder6写的,可以拖动的图片,提供一个思路,很简单的一个demo
  • C++ Builder 6的应用开发技术解析。
  • C++Builder6编程实例精解.pdf
  • C++Builder6编程实例精解》PDF及源码 C++Builder6编程实例精解》PDF及源码
  • C++Builder 6 注册机

    热门讨论 2009-02-28 23:29:33
    C++Builder 6 borland c++6.0 bulider密码:《序列号: e5kr-jg48a-ab3a3 授权钥匙:h7z-zex 产品编号:CPE1360CPFS180.BCB_6 C++BUILDER 6 Enterprise 》
  • C++Builder6教程

    2011-01-06 16:56:49
    C++Builder6[1].0教程
  • C++ Builder 6注册机

    2011-08-07 13:06:38
    C++ Builder 6的注册机,非常好用,百分之百注册
  • C++Builder6使用OpenCL

    2018-12-31 23:22:00
    C++Builder6使用OpenCL具有一定意义,经过努力,已经可以运行了,记录内容供参考。(使用的是Intel集成显卡主板) 1. 转换库:OpenCL以静态库方式提供开发,Intel只有一种COFF格式静态库,C++Builder6使用OMF格式...

        C++Builder6使用OpenCL具有一定意义,经过努力,已经可以运行了,记录内容供参考。(使用的是Intel集成显卡主板)

    1. 转换库:OpenCL以静态库方式提供开发,Intel只有一种COFF格式静态库,C++Builder6使用OMF格式静态库,所以需要转换。C++Builder6自带coff2omf.exe转换即可。

    2. 创建控制台程序,创建OpenCL目录,考入SDK安装目录下的CL文件夹,考入转换过的OpenCL.lib库文件,再创建一个OpenCL目录,考入应用源文件和头文件。

    3. 修改头文件

        3.1 修改考入的cl.h文件:

    //修改#include <CL/cl_platform.h>为
    #include "..\OpenCL\Intel\CL\cl_platform.h"。
    //关闭
    /* Deprecated OpenCL 1.1 APIs */
    //extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
    //clCreateImage2D(cl_context              /* context */,
    //                cl_mem_flags            /* flags */,
    //                const cl_image_format * /* image_format */,
    //                size_t                  /* image_width */,
    //                size_t                  /* image_height */,
    //                size_t                  /* image_row_pitch */,
    //                void *                  /* host_ptr */,
    //                cl_int *                /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
        
    //extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
    //clCreateImage3D(cl_context              /* context */,
    //                cl_mem_flags            /* flags */,
    //                const cl_image_format * /* image_format */,
    //                size_t                  /* image_width */,
    //                size_t                  /* image_height */,
    //                size_t                  /* image_depth */,
    //                size_t                  /* image_row_pitch */,
    //                size_t                  /* image_slice_pitch */,
    //                void *                  /* host_ptr */,
    //                cl_int *                /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
        
    //extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
    //clEnqueueMarker(cl_command_queue    /* command_queue */,
    //                cl_event *          /* event */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
        
    //extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
    //clEnqueueWaitForEvents(cl_command_queue /* command_queue */,
    //                        cl_uint          /* num_events */,
    //                        const cl_event * /* event_list */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
        
    //extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
    //clEnqueueBarrier(cl_command_queue /* command_queue */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
    
    //extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_int CL_API_CALL
    //clUnloadCompiler(void) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
        
    //extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED void * CL_API_CALL
    //clGetExtensionFunctionAddress(const char * /* func_name */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
    

        3.2 修改考入的cl_platform.h文件: 

    /*typedef int16_t         cl_short    __attribute__((aligned(2)));
    typedef uint16_t        cl_ushort   __attribute__((aligned(2)));
    typedef int32_t         cl_int      __attribute__((aligned(4)));
    typedef uint32_t        cl_uint     __attribute__((aligned(4)));
    typedef int64_t         cl_long     __attribute__((aligned(8)));
    typedef uint64_t        cl_ulong    __attribute__((aligned(8)));
    
    typedef uint16_t        cl_half     __attribute__((aligned(2)));
    typedef float           cl_float    __attribute__((aligned(4)));
    typedef double          cl_double   __attribute__((aligned(8)));*/
    //修改为
    #pragma pack(2)
    typedef int16_t         cl_short;
    typedef uint16_t        cl_ushort;
    typedef uint16_t        cl_half;
    #pragma pack()
    
    #pragma pack(4)
    typedef float           cl_float;
    typedef int32_t         cl_int;
    typedef uint32_t        cl_uint;
    #pragma pack()
    
    #pragma pack(8)
    typedef int64_t         cl_long;
    typedef uint64_t        cl_ulong;
    typedef double          cl_double;
    #pragma pack()
    //注意:#pragma pack只能改变结构,可能不能改变内存,未验证
    
    //关闭
    //#warning  Need to implement some method to align data here
    

    4. 将..\OpenCL\Intel\OpenCL\OpenCL.cpp加入项目,自动包含..\OpenCL\Intel\OpenCL\OpenCL.h。

    OpenCL.h文件

    #ifndef OpenCLH
    #define OpenCLH
    
    #define CL_USE_DEPRECATED_OPENCL_1_2_APIS // 使用OpenCL 1.2
    #include "..\OpenCL\Intel\CL\cl.h"
    
    class COpenCL
    {
     public:
    
        bool Install(void);// 安装
        void ReleaseKernel(cl_kernel Kernel);// 释放核
        void UnInstall(void);// 卸载
        cl_mem CreateBuffer(size_t mem_size, cl_mem_flags mem_flag);// 创建缓冲区
        bool WriteBuffer(cl_mem RefersBufferObject, void *pInputData, size_t mem_size);// 写缓冲区
        bool ReadBuffer(cl_mem RefersBufferObject, void *pOutData, size_t mem_size);// 读缓冲区
        cl_kernel CreateProgramSource(const char *pKernelProgramSource, const char *pKernelFunctionName);// 创建异构源代码
        bool SetKernelArg(cl_kernel Kernel, cl_int ParamNumber, cl_mem Mem_D);// 输入核参数
        bool ExecuteKernel(cl_kernel KernelName, cl_uint work_dims, const size_t *global_work_size, const size_t *local_work_size);// 运行GPU核函数
        cl_uchar *MapBuf(cl_mem RefersBufferObject, size_t MapByteCount, cl_map_flags map_flag);// 映射缓冲区
        void ReleaseMemObject(cl_mem MemObject);// 释放存储器资源
        void Finish(void);// 等待刷新
    
     private:
    
        cl_device_id DevicesID; // 设备ID
        cl_context Context; // 设备管理
        cl_command_queue CommandQueue; // 命令队列
        cl_program Program; // 核对象
    };
    
    #endif
    

    OpenCL.cpp文件  

    #include "OpenCL.h"
    
    bool COpenCL::Install(void)
    {
       cl_int Err; cl_platform_id PlatformID;
    
       Err = clGetPlatformIDs(1, &PlatformID, NULL);
       if (Err != CL_SUCCESS) return true;
       Err = clGetDeviceIDs(PlatformID, CL_DEVICE_TYPE_GPU, 1, &DevicesID, NULL);
       if (Err != CL_SUCCESS) return true;
       Context = clCreateContext(0, 1, &DevicesID, NULL, NULL, &Err);
       if (Err != CL_SUCCESS) return true;
       CommandQueue = clCreateCommandQueue(Context, DevicesID, 0, &Err);
       if (Err != CL_SUCCESS) return true;
    
       return false;
    }
    
    void COpenCL::ReleaseKernel(cl_kernel Kernel)
    {
       if (Kernel != 0)
       {
          clReleaseKernel(Kernel);
          Kernel = 0;
       }
    }
    
    void COpenCL::UnInstall(void)
    {
       if (Program != 0)
       {
           clReleaseProgram(Program);
           Program = 0;
       }
    
       if (CommandQueue != 0)
       {
           clReleaseCommandQueue(CommandQueue);
           CommandQueue = 0;
       }
       if (Context != 0)
       {
           clReleaseContext(Context);
           Context = 0;
       }
    }
    
    cl_mem COpenCL::CreateBuffer(size_t mem_size, cl_mem_flags mem_flag)
    {
       return clCreateBuffer(Context, mem_flag, mem_size, NULL, NULL);
    }
    
    bool COpenCL::WriteBuffer(cl_mem RefersBufferObject, void *pInputData, size_t mem_size)
    {
       cl_int Err = clEnqueueWriteBuffer(CommandQueue, RefersBufferObject, CL_TRUE, 0, mem_size, pInputData, 0, NULL, NULL);
       if (Err != CL_SUCCESS) return false;
    
       return true;
    }
    
    bool COpenCL::ReadBuffer(cl_mem RefersBufferObject, void *pOutData, size_t mem_size)
    {
       cl_int Err = clEnqueueReadBuffer(CommandQueue, RefersBufferObject, CL_TRUE, 0, mem_size, pOutData, 0, NULL, NULL);
       if (Err != CL_SUCCESS) return false;
    
       return true;
    }
    
    cl_kernel COpenCL::CreateProgramSource(const char *pKernelProgramSource, const char *pKernelFunctionName)
    {
       Program = clCreateProgramWithSource(Context, 1, &pKernelProgramSource, NULL, NULL);
       clBuildProgram(Program, 1, &DevicesID, NULL, NULL, NULL);
    
       return clCreateKernel(Program, pKernelFunctionName, NULL);
    }
    
    bool COpenCL::SetKernelArg(cl_kernel Kernel, cl_int ParamNumber, cl_mem Mem_D)
    {
       cl_int Err = clSetKernelArg(Kernel, ParamNumber, sizeof(cl_mem), &Mem_D);
       if (Err != CL_SUCCESS) return false;
    
       return true;
    }
    
    bool COpenCL::ExecuteKernel(cl_kernel KernelName, cl_uint work_dims, const size_t *global_work_size, const size_t *local_work_size)
    {
       cl_int Err = clEnqueueNDRangeKernel(CommandQueue, KernelName, work_dims, NULL, global_work_size, local_work_size, 0, NULL, NULL);
       if (Err != CL_SUCCESS) return false;
    
       return true;
    }
    
    cl_uchar *COpenCL::MapBuf(cl_mem RefersBufferObject, size_t MapByteCount, cl_map_flags map_flag)
    {
       return (cl_uchar *)clEnqueueMapBuffer(CommandQueue, RefersBufferObject, CL_TRUE, map_flag, 0, MapByteCount, 0, NULL, NULL, NULL);
    }
    
    void COpenCL::ReleaseMemObject(cl_mem MemObject)
    {
       if (MemObject != 0)
       {
          clReleaseMemObject(MemObject);
          MemObject = 0;
       }
    }
    
    void COpenCL::Finish(void)
    {
       clFinish(CommandQueue);
    }
    //---------------------------------------------------------------------------
    

    解释:

    1. 因库格式不对,所以不能直接包含,转换后放在解决方案的一个相对目录中,显式链接。  

    2. 因C++Builder 6不认识__attribute__等,需要修改考入的包含头文件。  

    在Win10 C++Builder 6编译通过。

    注意:可能存在潜在问题,目前简单测试没问题。

     

    转载于:https://www.cnblogs.com/hbg200/p/10203634.html

    展开全文
  • Borland C++Builder6 的升级包 Update4。
  • c++builder6彻底研究pdf

    2013-11-28 23:26:28
    c++builder6彻底研究pdf
  • 最近用到阿里云物联网平台,没有合适的SDK,需要自行开发接入,MQTT连接签名需要用到hmacsha1算法,找了一些资料,用C++ Builder6做了个demo实现了,给大家做个参考,加密出来签名和阿里云物联网平台官方示例一致。
  • C++Builder6注册机XP版

    2014-05-21 20:41:57
    C++Builder6 注册机 不支持win7
  • C++BUILDER6 mis SYSTEM

    2014-12-04 10:33:47
    C++BUILDER6 开发的数据库管理系统。实现了串口通信,ACCESS数据库的连接。还有操作人员的权限管理。定时控制。设备增加,修改。数据库记录导出为EXCEL表。
  • C++builder6注册机

    2008-11-21 09:57:42
    C++builder6注册机, 下载
  • Borland C++ Builder6开发人员指南
  • C++ builder6 组件包BPL

    2015-04-20 22:07:47
    C++ builder6完全bpl包,包含安装后的所有控件所需的bpl文件
  • C++Builder6注册机

    2010-03-19 21:13:35
    C++Builder6 注册机,可用的,其它没有什么好说的,只为20个字符
  • 软件使用C++ builder6。删除选中的StringGrid行。序号不随删除而变化。如果需要变化,则将第一列的字符转化为数字后-1。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,906
精华内容 762
关键字:

c++builder6

c++ 订阅