小编Hen*_*nry的帖子

将记录作为函数结果从Delphi DLL传递给C++

我现在正在经历一些非常奇怪的事情.当我将结构从C++传递给Delphi DLL作为参数时,一切正常.但是,一旦我想收到一条记录,我就会得到错误的值或异常.我停用了记录的对齐方式,以便传递它们!继承人的代码!

Delphi DLL:

TSimpleRecord = packed record
  Nr1 : Integer;
  Nr2 : Integer;
end;

//...

function TTest() : TSimpleRecord; cdecl;
begin
  Result.Nr1 := 1;
  Result.Nr2 := 201;
  ShowMessage(IntToStr(SizeOf(Result)));
end;
Run Code Online (Sandbox Code Playgroud)

C++调用:

#pragma pack(1)
struct TSimpleRecord
{
    int Nr1;
    int Nr2;
};

//...

    typedef TSimpleRecord (__cdecl TestFunc)(void);
    TestFunc* Function;
    HINSTANCE hInstLibrary = LoadLibrary("Reactions.dll");
    if (hInstLibrary)
    {
        Function = (TestFunc*)GetProcAddress(hInstLibrary, "TTest");
        if (Function)
        {
            TSimpleRecord Result = {0};
            Result = Function();
            printf("%d - %d - %d", sizeof(Result), Result.Nr1, Result.Nr2);
            cin.get();
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c++ delphi dll

7
推荐指数
1
解决办法
2323
查看次数

在Windows 10上安装tizen studio时出错

无论我尝试的三个tizen studio 2.0安装程序中的哪一个,它们都不起作用,因为它们不会接受任何路径.CLI安装程序提供了最详细的说明:

**您指定的目录不允许安装Tizen Studio.Tizen Studio的某些工具无法在具有管理员权限的目录中正常工作,或者对您的帐户具有只读访问权限.=> path

我尝试使用管理员权限启动安装程序并拥有目标文件夹.另外,我从JDK 9切换到8.

但是,似乎没有办法让安装程序运行.任何想法可能是什么原因?谢谢!

64-bit tizen tizen-wearable-sdk windows-10

6
推荐指数
2
解决办法
1万
查看次数

在C++ Builder中编译Boost库时的警告

当我尝试包含<boost/thread.hpp>在C++ Builder中时,我收到警告.对于我所包含的每个单元,C++ Builder显示这两行:

thread_heap_alloc.hpp(59): W8128 Can't import a function being defined
thread_heap_alloc.hpp(69): W8128 Can't import a function being defined
Run Code Online (Sandbox Code Playgroud)

已经尝试了一些东西,但没有任何效果.

它编译正确,然而,它让我紧张.为什么要显示此消息?

这些线是:

#include <boost/config/abi_prefix.hpp>

namespace boost
{
    namespace detail
    {
        inline BOOST_THREAD_DECL void* allocate_raw_heap_memory(unsigned size)
        { 
            void* const eap_memory=detail::win32::HeapAlloc(detail::win32::GetProcessHeap(),0,size);
            if(!heap_memory)
            {
                throw std::bad_alloc();
            }
        return heap_memory;
    }

    inline BOOST_THREAD_DECL void free_raw_heap_memory(void* heap_memory)
    {
        BOOST_VERIFY(detail::win32::HeapFree(detail::win32::GetProcessHeap(),0,heap_memory)!=0);
    }
Run Code Online (Sandbox Code Playgroud)

其中59是{低于BOOST_THREAD_DECL69,看起来BOOST_THREAD_DECL没有正确定义或错误定义,试图通过Boost代码并不那么容易.

这是Boost 1.39.

c++ boost c++builder

4
推荐指数
1
解决办法
1850
查看次数

比较Haskell中的列表元素

我只是在学习Haskell而且有点卡住了.我想比较列表元素并测量它们之间的差异并返回最高的元素.不幸的是,我不知道如何解决这个问题.通常,我只是迭代列表并比较邻居,但这似乎不是Haskell的方式.我已经尝试过使用,map但正如我所说,我真的不知道如何解决这个问题.我会感谢各种建议!

最好的祝愿

编辑:我的想法是首先拉链这样的所有对pairs a = zip a (tail a).然后我想得到所有的差异(可能与map?)然后只选择最高的一个.我只是无法处理Haskell语法.

haskell eclipse-fp

1
推荐指数
1
解决办法
4566
查看次数

在C++ Builder和VC++中使用std :: string的差异

因为我可以得到新的RAD Studio Xe4,我想我会尝试一下.不幸的是,我对C++并不熟悉,因此我想知道为什么在VC++中完美运行的代码在C++ Builder中根本不起作用.大多数问题都是转换不同的var类型.例如 :

std::string Test = " ";
GetFileAttributes(Test.c_str());
Run Code Online (Sandbox Code Playgroud)

在VC++中工作,但在C++ Builder中它不会编译,告诉我"E2034无法将'const char*'转换为'wchar_t*'.我错过了什么?在所有编译器上工作原理不同的原因是什么?同样的?谢谢

c++ c++builder visual-studio-2010

0
推荐指数
1
解决办法
2018
查看次数