将数组从非托管C ++传递到C#

时间:2020-03-26 09:54:21

标签: c# c++ c++-cli

我是C#的C ++ / CLI包装新手,在将数组传递给C#时遇到一些问题。

本地c ++

const double *NDimInversion::GetOutputAverage() const
{
    if ( mOutputOk )
        return mAvgY.data().begin();
    else
        throw runtime_error("Error in NDimInversion::GetOutputAverage(): output not available.");
}

本地标题

const double *GetOutputAverage() const;

包装头

public ref class NDimInversion
public: 
  array<double>^ GetOutputAverage();

包装c ++

array<double>^ NDimInversion::GetOutputAverage() {

    array<double> tempArr = nDimInversion->GetOutputAverage(); // ???? 

    const int SIZE = tempArr.size();
    array<double>^ tempReturn = gcnew array<double>(SIZE);
    for (int i = 0; i < SIZE; i++)
    {
        tempReturn[i] = tempArr[i];
    }

    return tempReturn
};

我计划将本机返回值转换为CLI数组,但是无法传递该数组。 你能指出我在想什么吗?
我是否还需要在CLI中输入“ const”关键字?

1 个答案:

答案 0 :(得分:-1)

这说明了如何copy between managed and unmanaged arrays。 示例From this question

import PyPDF2
import os
import sys

if not sys.warnoptions:
    import warnings
    warnings.simplefilter("ignore")

pdf_path=r'path'
os.chdir(pdf_path)

output_pdf=input("Enter for output pdf: ")

#Get PDF list
pdfmerge=[]
for pdf_file in os.listdir(pdf_path):
    if pdf_file.endswith('.pdf'):
        pdfmerge.append(pdf_file)

pdfWriter = PyPDF2.PdfFileWriter()

#loop through all PDFs
for pdf_file in pdfmerge:
    pdfFileObj=open(pdf_file,'rb')
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

for pageNum in range(pdfReader.numPages):
    pageObj=pdfReader.getPage(pageNum)
    pdfWriter.addPage(pageObj)

#Save PDF
pdfOutput=open(output_pdf+'.pdf','wb')

pdfWriter.write(pdfOutput)
pdfOutput.close()

如评论中所述,您绝对需要知道源数组中的项目数。

相关问题