jtwc 发表于 2024-1-14 13:28

C++中函数跨.cpp如何调用?

本帖最后由 jtwc 于 2024-1-14 14:55 编辑

各位老师,C++中函数跨.cpp如何调用?1个c++文件中含CustomTradeSpi.cpp源码函数:void CustomTradeSpi::OnRspQryInvestorPosition(CThostFtdcInvestorPositionField* pInvestorPosition, CThostFtdcRspInfoField* pRspInfo, int nRequestID,bool bIsLast)
{
        if (!isErrorRspInfo(pRspInfo))
        {
                std::cout << "=====查询投资者持仓成功=====" << std::endl;
                if (pInvestorPosition)
                {
                        std::cout << "合约代码: " << pInvestorPosition->InstrumentID << std::endl;
                        std::cout << "开仓价格: " << pInvestorPosition->OpenAmount << std::endl;
                        std::cout << "开仓量: " << pInvestorPosition->OpenVolume << std::endl;
                        std::cout << "开仓方向: " << pInvestorPosition->PosiDirection << std::endl;
                        std::cout << "占用保证金:" << pInvestorPosition->UseMargin << std::endl;

                }
                else
                        std::cout << "----->该合约未持仓" << std::endl;
               
                        // 策略交易
                std::cout << "=====开始进入策略交易=====" << std::endl;
                       
        }
}如何在main.cpp中调用CustomTradeSpi::OnRspQryInvestorPosition(CThostFtdcInvestorPositionField* pInvestorPosition, CThostFtdcRspInfoField* pRspInfo, int nRequestID,bool bIsLast)
{
        if (!isErrorRspInfo(pRspInfo))
        {
                std::cout << "=====查询投资者持仓成功=====" << std::endl;
                if (pInvestorPosition)
                {
                        std::cout << "合约代码: " << pInvestorPosition->InstrumentID << std::endl;
                        std::cout << "开仓价格: " << pInvestorPosition->OpenAmount << std::endl;
                        std::cout << "开仓量: " << pInvestorPosition->OpenVolume << std::endl;
                        std::cout << "开仓方向: " << pInvestorPosition->PosiDirection << std::endl;
                        std::cout << "占用保证金:" << pInvestorPosition->UseMargin << std::endl;

                }
                else
                        std::cout << "----->该合约未持仓" << std::endl;
               
                        // 策略交易
                std::cout << "=====开始进入策略交易=====" << std::endl;
                       
        }
}

bester 发表于 2024-1-14 13:34

1.extern 关键字
2.CustomTradeSpi.cpp加载一个头文件A.h,将函数声明在头文件 main.cpp 包含该头文件

董督秀 发表于 2024-1-14 13:54

其实还有第三种方法,把重要的功能函数编译成lib库,库的头文件添加声明。在main.cpp引用该库的头文件,把lib库文件放在main.cpp目录下,就能直接调用这个功能函数。

qqLinux 发表于 2024-1-14 14:22

分编译期和运行期,
1。编译期在编译命令行或者项目管理上加上.cpp。并且在调用前声明其形式
2。运行期需要编译成动态库,利用平台特性的动态加载动态库加载到程序当中,再利用平台api搜索函数起始地址,使用指针调用调用,形如"p()"。该方式一般要求名称需要正确,需要参考编译器编译函数名称规则。

KaneHiroshi 发表于 2024-1-14 15:23

不如说不跨cpp才是不正常的,正常来说都是定义和调用分开的

雪流星 发表于 2024-1-14 15:54

写在头文件,或者lib库。.cpp .c是无法跨的

michaelgao 发表于 2024-1-14 21:05

直接include cpp文件也是可以的,编译器一般会项目当前目录、系统目录查找include的文件名文件;然后在包含的文件里,查找严格匹配的函数(函数名、参数类型等)。 文件名的后缀是.h ,还是.cpp并不重要,跟人名一样,只是个符号而已。

zhanglyl 发表于 2024-1-15 09:36

头文件了解一下。关于CPP的概念需要巩固

vtor 发表于 2024-1-17 09:47

就是变量跨文件啊,extern就好啊

zishen 发表于 2024-1-17 12:52

写在头文件呀
页: [1]
查看完整版本: C++中函数跨.cpp如何调用?